繁体   English   中英

discord.py 中的静音和取消静音命令

[英]Mute and unmute command in 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 上搜索了其他静音命令,但找不到任何功能或体面的东西。 另外,如果我能够完成这项工作,我将如何 go 也做出取消静音命令?

好吧,我知道可能为时已晚,但这是我的静音命令:

@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")

我也需要取消静音命令。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM