你如何让机器人程序为静音角色添加使服务器中的所有频道都只读



我在一些服务器上设置了一个机器人程序,设置了静音角色,但我制作了一个静音角色,如何在所有频道中使其只读?

首先,如果您想要;静音";角色在你的机器人加入的每一台服务器上,你会做这样的事情:

@client.event
async def on_guild_join(guild):
if mutedrole == None:
await guild.create_role(name="muted", color=discord.Colour(0x2C2F33), permissions= discord.Permissions(send_messages=False,read_messages=True))
for channel in guild.channels:
await channel.set_permissions(mutedrole, send_messages=False, send_tts_messages=False
)

正如你所看到的,被静音的角色有发送消息的权限设置为False,这意味着在每个频道中被静音的人都无法发送任何消息。

接下来,如果你不想自己分配静音命令给这个人,你会想要静音命令本身:

@commands.command(pass_context=True)
@commands.has_permissions(administrator=True) # Only admins can mute
async def mute(self,ctx, member : discord.Member):
mutedrole = discord.utils.get(ctx.guild.roles, name="muted")
if member: # If a member has been pinged ([prefix]mute @User)
await member.add_roles(mutedrole)
await ctx.send(f'{member.mention} has been muted!)

这样,如果你在使用此命令时ping用户(当你有管理员权限时(,他将收到通知并被赋予静音角色。

最新更新