python - 您如何让机器人添加使服务器中的所有频道都只读为静音角色?
问题描述
我在一些设置了静音角色的服务器上有一个机器人,但我做了一个静音角色,我如何让它在所有频道中只读?
解决方案
首先,如果您希望“静音”角色出现在您的机器人加入的每台服务器上,您可以执行以下操作:
@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 用户(当您具有管理员权限时),他将收到通知并被赋予静音角色。
推荐阅读
- sql - 每个序列 SQL Server 的最大序列
- python - 如何获取单行输入并将其分成姓名、电话号码和城市,然后创建字典键值对
- python - 我的 python 脚本多次打印相同的值
- html - Bootstrap v5.0.2 Navbar - 移除阴影/边框/轮廓
- mysql - MySQL 和 Visual Studio 无法识别主键
- node.js - PayPal 401 客户端身份验证在使用节点 js sdk 的沙盒环境中失败
- scala - 我们如何在 Scala 中为 UDF 编写单元测试
- javascript - 如何在 Fullcalendar 资源视图上启用拖放属性?
- apache - 使用 ProxyPass 的反向代理
- php - wordpress 中的 Bootstrap Navwalker 父链接问题