#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. Спасибо, сэр, но не могли бы вы, пожалуйста, сказать мне, как отключить участника только на определенное время и по определенной причине