(Discord.py)如何锁定和解锁语音通道



我是一个编程新手。在Stackoverflow和YouTube上工作了几个小时后,我创建了Bot,它允许为所有服务器用户(任何角色)自动创建临时语音通道,并在它们清空时删除此通道。

async def on_voice_state_update(member, before, after):
person_freq=['1', '2', '3']
person = member.name

if member.bot:
return
if str(after.channel) == "+ NEW":
if str(after) != str(before):
guild = member.guild
freq = person_freq[0]
act_voice_channels = (c.name for c in guild.voice_channels)
for freq in person_freq:
if freq not in act_voice_channels:
await after.channel.clone(name=freq)
channel = discord.utils.get(guild.voice_channels, name=freq)
await member.move_to(channel)
return

if len(before.channel.members) == 0: 
await before.channel.delete()

我故意删除了带有其他IF条件的部分代码。

现在我想给创建每个特定通道的成员添加权限。并删除它后,通道将被删除。这个本地管理员将需要能够"锁定"one_answers"解锁"他自己的voice_channel。在使用"lock"-命令的情况下,除了服务器管理员之外,没有人允许加入该通道。在使用"unlock"命令的情况下,此禁令将被解除。

我想我需要在这两个defs中写smtn

#lock
@client.command(pass_context=True)
@commands.has_permissions(**administrator**=True)
async def lock(ctx):

#unlock
@client.command(pass_context=True)
@commands.has_permissions(**administrator**=True)
async def unlock(ctx):

考虑到可能有很多这样的渠道,我怎么能做到呢?

感谢@ChaoticNebula在GitHub上分享相同的问题。由于新版本的discord.py,我做了一些更正,并解决了这个问题:

#lock
@client.command(pass_context=True)
@commands.has_permissions(manage_channels=True)
async def lock(ctx):
await ctx.channel.purge (limit=1)
channel = ctx.message.author.voice.channel
overwrite = channel.overwrites_for(ctx.guild.default_role)
overwrite.connect = False
await channel.set_permissions(ctx.guild.default_role, overwrite=overwrite)

#unlock
@client.command(pass_context=True)
@commands.has_permissions(manage_channels=True)
async def unlock(ctx):
await ctx.channel.purge (limit=1)
channel = ctx.message.author.voice.channel
overwrite = channel.overwrites_for(ctx.guild.default_role)
overwrite.connect = True
await channel.set_permissions(ctx.guild.default_role, overwrite=overwrite)

相关内容

  • 没有找到相关文章

最新更新