#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.
но он этого не делает.