Задать вопрос
@fanepka
Работаю на Python

Игнорирование команды discord.py?

Добрый день. Делал себе бота и хотел делать проверку на регистрацию пользователя и гильдии в базе данных. Для это использовал on_message, чтобы получать все сообщения из гильдий. Но тут проблема. Основные команды бот теперь игнорирует. Вроде бы загуглил правильно, но ответа нет. Помогите

Сам код

client = commands.Bot(command_prefix=config.PREFIX)
client.remove_command('help')

@client.event
async def on_message(ctx):
	try:
		print(ctx)

	except AttributeError:
		pass

#Test command
@client.command(pass_context=True)
async def test(ctx):
	await ctx.send('`Привет`')
  • Вопрос задан
  • 642 просмотра
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Python-разработчик: расширенный курс + нейросети
    12 месяцев
    Далее
  • Академия Эдюсон
    Python-разработчик
    9 месяцев
    Далее
  • ProductStar × РБК
    Профессия: Python-разработчик + ИИ
    8 месяцев
    Далее
Решения вопроса 1
F.A.Q./Why does on_message make my commands stop w...:
Замена стандартного `on_message` предотвращает выполнение любых дополнительных команд. Для исправления этого добавьте добавьте строку `bot.process_commands(message)` в конце вашего `on_message`, например:

@bot.event
async def on_message(message):
    # делаем что-нибудь тут

    await bot.process_commands(message)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@ratratrat
в дополнение: неверно расставлены отступы, у Вас их 2, а должно быть 4(!)

client = commands.Bot(command_prefix=config.PREFIX)
client.remove_command('help')

@client.event
async def on_message(ctx):
    try:
        print(ctx)

    except AttributeError:
        pass

#Test command
@client.command()
async def test(ctx):
    await ctx.send('`Привет`')


также в новой версии можно вбивать client.command без pass_context

также советую использовать Tab для быстроты расстановки отступов
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
ITK academy Краснодар
от 220 000 до 300 000 ₽
ITK academy Краснодар
от 75 000 ₽
DimaTech Ltd Краснодар
от 140 000 до 140 000 ₽