Как сделать так, чтобы async def on_message распознавал команды?

Рейтинг: 0Ответов: 1Опубликовано: 17.08.2023

Никак не могу сделать так, чтобы on_message распознавал команды (то есть если сообщение это @bot.command(), то он её выполнял). Сказали, что получится только через абстрактный класс, в котором будут все команды, но не знаю, как это правильно сделать.

Вот обрывок кода:

@bot.event
async def on_message(message):   
        
    if message.author.bot == False:
        channel_id_search = gch_cur.execute(f"SELECT channel FROM guild_channel WHERE channel = {message.channel.id}")
        channel_id = channel_id_search.fetchone()
        if channel_id == None:
            return

В начале функции мне нужно проверить, является ли message командой. Если кто знает, прошу, помогите.

Ответы

▲ 0

Здравствуй! Немного не понял вашего вопроса. При создании объекта класс bot, вы можете указать префикс его команд. Также не забудьте указать в intents, то что бот может просматривать сообщения! Удачи в разработке!

import discord
from discord.ext import commands

intents = discord.Intents.default()
intents.message_content = True

bot = commands.Bot(command_prefix='$', intents=intents)

@bot.command()
async def hello(ctx):
    await ctx.reply(f'Hello, {ctx.author.mention}!')

if __name__ == '__main__':
    bot.run('TOKEN')

введите сюда описание изображения