我如何获得每个文本和语音通道并拒绝@每个人阅读它,然后允许另一个角色阅读和发送?

How would I get every text and voice channel and denying @ everyone to read it, and then allowing another role to read and send?

我想知道当机器人被添加到公会时,我如何让它获得每个文本和语音频道,然后拒绝@everyone 访问它,但允许另一个名为 'Verified' 的角色阅读是吗?
我正在使用 Discord.py

的重写版本

编辑:我找到了如何使用

更改权限
await message.channel.set_permissions(message.author, read_messages=True, send_messages=False)

但我仍然不知道如何在每个频道上应用它

尽管您已经在 Discord 上得到了答案,但还是在这里为其他人发布此内容;)

您需要通过 Guild.channels

遍历公会中的每个频道

这只会改变发送消息的用户的情况。要阻止所有人,您必须为 Guild.default_role 设置权限。以下命令接受现有角色和任意数量的成员。它为调用者和所有这些成员提供该角色,然后禁止没有该角色的所有人阅读消息。

from discord.ext import commands
import discord

bot = commands.Bot(command_prefix='!')

@bot.command()
async def verify(ctx, role: discord.Role, *members: discord.Member):
    for member in (ctx.author, *members):
        await member.add_roles(role, reason=f"Verify command by {ctx.author.id}")
    for channel in ctx.guild.channels:
        await channel.set_permissions(ctx.guild.default_role, read_messages=False)
        await channel.set_permissions(role, read_messages=True)

bot.run("Token")