首页 > 解决方案 > 将选定的频道排除在 discord.py 循环之外

问题描述

我创建了一个机器人,它会在我键入命令时锁定每个频道,但是,我不希望它锁定员工频道和公告频道。到目前为止,这是我的代码:

@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:
            channel = channel
            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')

我怎样才能做到这一点?

标签: pythondiscorddiscord.py

解决方案


您可以使用阻塞语句排除您不想按名称锁定的频道。像这样:

@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')

推荐阅读