python - discord.py 中的静音和取消静音命令
问题描述
我正在尝试发出静音命令。下面的代码没有给出任何错误,但它不起作用。
@client.command()
@commands.has_permissions(manage_messages=True)
async def mute(ctx, member : discord.Member) :
guild = ctx.guild
user = member
global mute_role
for role in guild.roles:
if role.name == "MUTED" :
if role in user.roles:
await ctx.send(f'**{user.name} is already muted!**')
else:
await member.add_roles(role)
await ctx.send(f"{member.mention} has been muted by {ctx.author} ")
for role in guild.roles:
if role.name == "MUTED" not in guild.roles:
mute_role = await guild.create_role(name="MUTED")
perms = discord.PermissionOverwrite(send_messages=False)
for channel in guild.text_channels :
await channel.set_permissions(mute_role, overwrite=perms)
if role.name == "MUTED" not in user.roles:
await member.add_roles(mute_role)
await ctx.send(f'{member.mention} has been muted by {ctx.author.mention}')
return
我尝试了多种方法并“玩弄”了变量,但我没有设法做出功能性命令。我也想做一个定时静音命令,但首先我需要完成这项工作。我在 StackOverflow 上搜索了其他静音命令,但找不到任何功能或体面的东西。另外,如果我能够完成这项工作,我将如何进行取消静音命令呢?
解决方案
好吧,我知道可能为时已晚,但这是我的静音命令:
@client.command()
@commands.has_permissions(kick_members=True)
async def mute(ctx, member: discord.Member):
role = discord.utils.get(ctx.guild.roles, name="Muted")
guild = ctx.guild
if role not in guild.roles:
perms = discord.Permissions(send_messages=False, speak=False)
await guild.create_role(name="Muted", permissions=perms)
await member.add_roles(role)
await ctx.send("Successfully created Muted role and assigned it to mentioned user.")
else:
await member.add_roles(role)
await ctx.send(f"Successfully muted ({member})")
@mute.error
async def mute_error(ctx, error):
if isinstance(error, commands.MissingRole):
await ctx.send("You don't have the 'staff' role")
@mute.error
async def mute_error(ctx, error):
if isinstance(error, commands.BadArgument):
await ctx.send("That is not a valid member")
我也需要取消静音命令。
推荐阅读
- kibana - 如果有人正在更改/创建报告,是否可以触发警报
- python - 在 nlargest 数据框中只找到一个值
- visual-studio-2019 - 无法使用 Visual Studio 安装程序
- regex - 正则表达式:获取多行日志的特定匹配
- javascript - 将 if else 转换为 switch (Typescript)
- amazon-web-services - AWS MSK 使用的 EBS 存储卷类型
- ruby - RSpec:我们可以配置一个期望返回两个不同的值吗?我想测试重试机制
- jpeg - JPEG 编码。如何使用 Huffman 算法对 RLE(AC) 进行编码
- azure-devops - 扩大管道数量 AzureDevOps
- ruby-on-rails - 如何使用现有记录删除祖先