#discord.py
#discord.py
Вопрос:
Я пытаюсь отправить сообщение, когда команда не найдена, но она не работает:
@client.event
async def on_ready():
change_status.start()
print("----------------------")
print("Logged In As")
print("Username: %s" % client.user.name)
print("ID: %s" % client.user.id)
print("----------------------")
async def on_message(ctx, error):
if isinstance(error, commands.CommandNotFound):
text = ('Sorry {}, this command does not exist check $help for a more detailed list of').format(ctx.author.mention)
msg = await ctx.send(text)
await ctx.message.delete()
await asyncio.sleep(5)
await msg.delete()
else:
pass
raise error
Ответ №1:
Вы ищете on_command_error
событие
@client.event
async def on_command_error(ctx, error):
if isinstance(error, commands.CommandNotFound):
await ctx.send("Command does not exist.")
Ссылка:
Комментарии:
1. Я пробовал это, но я все еще сталкиваюсь с той же проблемой.
2. и в чем же проблема?
3. Я выполнил код, но когда я запускаю несуществующую команду, она по-прежнему выдает команду not found, хотя предполагается, что она должна отправить сообщение.
4. вы добавили декоратора
client.event
?
Ответ №2:
Я нашел ответ на свою проблему вместо того, чтобы запускать его через client.event декоратор, я запустил его через client.слушай, декоратор:
@client.event
async def on_ready():
change_status.start()
print("----------------------")
print("Logged In As")
print("Username: %s" % client.user.name)
print("ID: %s" % client.user.id)
print("----------------------")
@client.listen()
async def on_command_error(ctx, error):
if isinstance(error, commands.CommandNotFound):
text = ('Sorry {}, this command does not exist check $help for a more detailed list of').format(ctx.author.mention)
msg = await ctx.send(text)
await ctx.message.delete()
await asyncio.sleep(5)
await msg.delete()
Ответ №3:
on_command_error
Событие вызывается, когда при выполнении какой-либо команды возникает ошибка. и внутри on_command_error
события вы можете проверить, является ли ошибка экземпляром CommandNotFound
, который выдается, когда введенная команда не найдена, или она не существует. И если это так, вы можете отправить сообщение на канал, где была использована команда.
@client.event
async def on_command_error(ctx, error):
"""Command error handler"""
embed = discord.Embed(color=discord.Color.red())
if isinstance(error, commands.CommandNotFound):
embed.title = "Command not Found"
embed.description = "Recheck what you've typed."
#await ctx.send(embed=embed)