При попытке запустить команду discord бот ничего не делает[решено]
Пишу бота для discord на python и пытался добавить таймер
@client.event
async def on_message(message):
if message.content.startswith("таймер"):
message.id=766947123312721930
min=0
sec=60
while(sec != 0):
sec-=1
emb = discord.Embed(type="rich", colour=discord.Color.blurple(), description= f'До конца: {min} мин. {sec} сек.')
await message.edit(embed = emb)
await asyncio.sleep(0.25)
Но при попытке ввести команду #таймер выдают ошибку:
discord.ext.commands.errors.CommandNotFound: Command "таймер" is not found
Как исправить?
Ответы (1 шт):
Вы используете объект discord.ext.commands.Bot(), командой которого является отдельная асинхронная функция, помеченная декоратором @bot.command(), где bot - имя объекта вашего бота.
Вы же не создаете функцию команды, а просто пытаетесь обработать любое поступающее сообщение, путем сравнения первого слова. Если сообщение начинается с "#таймер", то обрабатываете его как команду.
Вообще, ваша текущая проблема решится, если в этой строке вы укажите "#" перед "таймер". То есть вот так:
if message.content.startswith("#таймер"):
Но в любом случае потом возникнут другие проблемы, так как код написан не совсем корректно. Ниже я немного поправил его и сделал правильное оформление команды бота :)
Вы используете объект discord.ext.commands.Bot(), который умеет обрабатывать полноценные команды. Зачем тогда создавать такие "костыли" через проверку сообщения?
Правильнее будет заменить вашу "команду" на асинхронную функцию:
import discord, asyncio
from discord.ext import commands
bot = commands.Bot(command_prefix = '#')
@bot.command()
async def таймер(ctx):
min=0
sec=60
emb = discord.Embed(type="rich", colour=discord.Color.blurple(), description= f'До конца: {min} мин. {sec} сек.')
message = await ctx.send(embed = emb)
while(sec != 0):
sec-=1
emb = discord.Embed(type="rich", colour=discord.Color.blurple(), description= f'До конца: {min} мин. {sec} сек.')
await message.edit(embed = emb)
await asyncio.sleep(0.25)
bot.run(TOKEN)
В конце укажите токен вашего бота!