Ошибка временного отключения Discord

#python #bots #discord.py

#python #боты #discord.py

Вопрос:

Я создавал команду временного отключения звука для своего discord, но я не знаю, какую команду мне следует использовать, ошибок там не указано.Это неожиданный результат, также, если вы можете сказать мне, как добавить причину, это было бы здорово!.Команда приведена ниже.

 @bot.command(pass_context=True, name="tempmute")
@has_permissions(mute_members=True)
async def tempmute(ctx, *, target: Member):
    if target.server_permissions.administrator:
        await bot.say("Target is an admin")
    else:
        try:
            await bot.mute(target)
            await bot.say('{} got muted by {}'.format(target.mention, message.author))
        except Exception:
            await bot.say("Something went wrong")

@tempmute.error
async def tempmute_error(error, ctx):
    if isinstance(error, CheckFailure):
        await bot.send_message(ctx.message.channel, "You do not have permissions")
    elif isinstance(error, BadArgument):
        await bot.send_message(ctx.message.channel, "Could not identify target")
    else:
        raise error
  

но команда не отключает или временно не отключает целевой объект и не отправляет никакой ошибки, она просто говорит «что-то пошло не так». Также я не могу найти команду, в которой я могу получить участника, который вызвал команду, в строке ожидания bot.say(‘{} отключено с помощью {}’.format(target.mention, message.author)) message.author Что я должен написать вместо этого, чтобы заставить участника, который вызвал команду, отключить целевой

Ответ №1:

Насколько я знаю, вы не можете отключить пользователя, просто набрав bot.mute(user) , вы должны добавить ему роль отключения звука, а затем настроить эту роль на вашем сервере, чтобы он не мог разговаривать ни по одному каналу. Также я снова не получаю, как в kick команде, почему вы добавляете * , это используется, если вы ожидаете больше аргументов в команде, чего вы не делаете в данном случае. Один из способов подойти к этому так:

 @bot.command(pass_context=True, name="tempmute")
@has_permissions(mute_members=True)
async def tempmute(ctx, target: Member):
    if target.server_permissions.administrator:
        await bot.say("Target is an admin")
    else:
        role = discord.utils.get(target.server.roles, name='Muted')#this line searched in the server if the role "Muted" exists
        await bot.add_roles(target, role) # this line adds to the user the muted role
        await bot.say("User {}, has been muted by moderator {}.".format(target.mention, ctx.message.auhtor.mention)) # this line sends an messsage

@tempmute.error
async def tempmute_error(error, ctx):
    if isinstance(error, CheckFailure):
         await bot.send_message(ctx.message.channel, "You do not have permissions")
    elif isinstance(error, BadArgument):
        await bot.send_message(ctx.message.channel, "Could not identify target")
    else:
        raise error
  

Комментарии:

1. Спасибо, сэр, но не могли бы вы, пожалуйста, сказать мне, как отключить участника только на определенное время и по определенной причине