首页 > 解决方案 > 您如何让机器人添加使服务器中的所有频道都只读为静音角色?

问题描述

我在一些设置了静音角色的服务器上有一个机器人,但我做了一个静音角色,我如何让它在所有频道中只读?

标签: pythondiscorddiscord.pybots

解决方案


首先,如果您希望“静音”角色出现在您的机器人加入的每台服务器上,您可以执行以下操作:

@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 用户(当您具有管理员权限时),他将收到通知并被赋予静音角色。


推荐阅读