Discord.py создание команды kick

#python #discord #discord.py

#python #Discord #discord.py

Вопрос:

Я нахожусь в процессе создания бота discord на python, пока что я выполнил несколько небольших команд, и теперь я пытаюсь добавить такие команды, как kick и ban , и я прочитал документацию из git hub и попытался создать команду, и я получил некоторую ошибку, но я исправил их, но теперь код для команды kick не выдает ошибку и не отправляет сообщение в канал discord, это происходит только тогда, когда не администратор пытается выполнить команду. Я использую has_premissions для этого, потому что мой бот будет находиться на 3-4 серверах

код здесь:

 @has_permissions(administrator=True)
async def kick(ctx, member: discord.Member, *, why=None):
    await member.kick(reason=why)
    await ctx.channel.send(f"**{member} has been kicked from this server by {ctx.author}**")


@kick.error
async def kick_error(error, ctx):
    if isinstance(error, MissingPermissions):
        await ctx.channel.send("Looks like you don't have the perm.")
  

заранее спасибо

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

1. у вас есть @bot.command() на вершине? и добавьте raise(error) в конце вашего обработчика ошибок, чтобы вы могли видеть ошибку

2. пробовал, но это не работает, и я добавил @bot.command сверху

3. Моя проблема на самом деле заключается в том, что команда работает, но она не отправляет сообщение, когда non-adminstrator использует команду, и в коде нет ошибок, а также я добавил все decorators.

Ответ №1:

Сначала вы должны использовать @commands.has_permissions вместо has_permissions .

Затем добавьте @client.command() верхнюю часть async def kick(ctx, member: discord.Member, *, why=None):

Редактировать

Если у вас возникли проблемы с обработкой ошибок, используйте

 @client.event
async def on_command_error(ctx, error):
  

вместо @kick.error . Итак, вы можете сделать это

 @client.event
async def on_command_error(ctx, error):
    if isinstance(error, MissingPermissions):
        await ctx.channel.send("Looks like you don't have the perm.")
  

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

1. я импортировал @has_permissions непосредственно из discord.py и я также добавил @client.commands только раньше, но все равно это не работает

2. Итак, вы можете удалять участников, но если у кого-то нет прав администратора, ошибка не отображается, я прав?

3. да, я написал код таким образом, что если кто-то не выполняет предварительные настройки, он должен отправить Looks like you don't have the perm. но он этого не делает.