Python 将所选频道保留在discord.py循环之外
我已经创建了一个机器人,当我键入命令时,它将锁定每个频道,但是,我不希望它锁定员工频道和公告频道。 以下是我目前的代码:Python 将所选频道保留在discord.py循环之外,python,discord,discord.py,Python,Discord,Discord.py,我已经创建了一个机器人,当我键入命令时,它将锁定每个频道,但是,我不希望它锁定员工频道和公告频道。 以下是我目前的代码: @bot.command(别名=['r']) @commands.has_权限(manage_channels=True) 异步def锁定(ctx): 对于bot.guilds中的帮会: 对于guild.text_频道中的频道: 频道 覆盖=频道。覆盖(ctx.guild.default\u角色) overwrite.send_messages=False 等待频道。设置权限
@bot.command(别名=['r'])
@commands.has_权限(manage_channels=True)
异步def锁定(ctx):
对于bot.guilds中的帮会:
对于guild.text_频道中的频道:
频道
覆盖=频道。覆盖(ctx.guild.default\u角色)
overwrite.send_messages=False
等待频道。设置权限(ctx.guild.default\u角色,覆盖=覆盖)
等待通道发送('锁定已开始')
如何执行此操作?您可以使用阻塞语句排除不想按名称锁定的频道。像这样:
@bot.command(aliases=['r'])
@commands.has_permissions(manage_channels=True)
async def lockdown(ctx):
for guild in bot.guilds:
for channel in guild.text_channels:
if channel.name in ['dont_lock_ch_name_1', 'dont_lock_ch_name_2']:
continue
overwrite = channel.overwrites_for(ctx.guild.default_role)
overwrite.send_messages = False
await channel.set_permissions(ctx.guild.default_role, overwrite=overwrite)
await channel.send('Lockdown has started')
您可以使用阻塞语句排除不想按名称锁定的通道。像这样:
@bot.command(aliases=['r'])
@commands.has_permissions(manage_channels=True)
async def lockdown(ctx):
for guild in bot.guilds:
for channel in guild.text_channels:
if channel.name in ['dont_lock_ch_name_1', 'dont_lock_ch_name_2']:
continue
overwrite = channel.overwrites_for(ctx.guild.default_role)
overwrite.send_messages = False
await channel.set_permissions(ctx.guild.default_role, overwrite=overwrite)
await channel.send('Lockdown has started')