我如何获得每个文本和语音通道并拒绝@每个人阅读它,然后允许另一个角色阅读和发送?
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")
我想知道当机器人被添加到公会时,我如何让它获得每个文本和语音频道,然后拒绝@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")