Бот думает что команды не существует
Писал код для дискорд бота. Суть такая: на команду /quest у меня стоит кулдаун в 1 час (3600 секунд). У меня есть команда, которую надо вводить по сути так: /reset_cd quest Но когда я пишу эту команду в дискорде, мне пишет, что команда quest не найдена. Пробовал писать и /reset_cd /quest но всё равно ничего не получается. В интернете смотрел способы решения, но ничего. Команда зарегистрирована, даже в консоли никаких ошибок. Просто команда не найдена.
Команда /quest:
@bot.slash_command(description='Реши пример и получи 10 тысяч денег!')
@commands.cooldown(1, 3600, commands.BucketType.user)
async def quest(interaction):
user_wallet = await get_user_wallet(interaction.author.id)
num1 = random.randint(1, 10000)
num2 = random.randint(1, 7000)
expression = f"{num1} + {num2}"
result = num1 + num2
await interaction.response.send_message(f"Решите пример: **{expression}**")
try:
def check(m):
return m.author == interaction.author and m.channel == interaction.channel
print(result)
user_answer = await bot.wait_for('message', timeout=5, check=check)
if user_answer.content.isdigit() and int(user_answer.content) == result:
user_wallet["balance"] += 10000
set_user_wallet(interaction.author.id, "balance", user_wallet["balance"])
await interaction.followup.send(f"**Правильно! Вы заработали 10 000 денег!**")
else:
await interaction.followup.send(f"**Неправильно. Попробуйте ещё раз позже.**")
except asyncio.TimeoutError:
await interaction.followup.send("**Время на решение примера истекло. Попробуйте ещё раз.**")
Команда /reset_cd:
@bot.slash_command()
@commands.check(lambda ctx: ctx.author.id == 1111894234216288328)
async def reset_cd(interaction, command_name: str):
"""Сбросить кд для команды
Parameters
-----------
command_name: str
Какой команде снять кд?
"""
await bot.wait_until_ready() # Дождитесь, пока бот полностью загрузится и зарегистрирует все команды
command = bot.get_command(command_name)
if command:
command.reset_cooldown(ctx)
await interaction.response.send_message(f"Кд для команды {command_name} сброшен.")
else:
await interaction.response.send_message(f"Команда {command_name} не найдена.")
Помогите пожалуйста, если вдруг у меня неправильный код!
Ответы (1 шт):
Я думаю, проблема в том, что вы используете в строке ctx, которого там (если я не ошибаюсь) быть не может:
command.reset_cooldown(ctx)
Измените её и передайте в этот параметр interaction:
command.reset_cooldown(interaction)