Discord mute command - PullRequest
       45

Discord mute command

3 голосов
/ 01 апреля 2020

В настоящее время я пытаюсь создать бот-диск с возможностью отключения звука пользователя. До сих пор я создал этот сценарий, который позволяет людям с ролью «персонал» запускать команду и дает помеченному пользователю роль «Приглушенный». Он также создает его, если он еще не существует. Проблема в приведенном ниже коде не работает. В консоли ничего не говорится, но если у вас есть роль персонала и вы запускаете команду, ничего не происходит.

@commands.has_role("staff")
async def mute(ctx, member: discord.Member=None):
    guild = ctx.guild
    if (not guild.has_role(name="Muted")):
        perms = discord.Permissions(send_messages=False, speak=False)
        await guild.create_role(name="Muted", permissions=perms)
    role = discord.utils.get(ctx.guild.roles, name="Muted")
    await member.add_roles(role)      
    print("? "+member+" was muted.")
    if (not member):
        await ctx.send("Please specify a member to mute")
        return
@mute.error
async def mute_error(ctx, error):
    if isinstance(error, commands.CheckFailure):
        await ctx.send("You don't have the 'staff' role")  

1 Ответ

1 голос
/ 02 апреля 2020

Это специфицирует c строку:

print("? "+member+" was muted.")

Печатает его в терминале или там, где вы выполняли команду. Попробуйте await ctx.send Кроме того, попробуйте использовать f-строки, если у вас версия> 3.6 из Python. Кроме того, ваша ошибка неверна.

@client.command()
@commands.has_role("staff")
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(f"?{member} was muted.")
    else:
        await member.add_roles(role) 
        await ctx.send(f"?{member} was muted.")     

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