← Все вопросы

Discord-бот запустился, on_ready сработал, а на сообщения не реагирует. Почему?

Задан 24 месяца назад355 просмотров2 ответа
11

Бот заходит онлайн, on_ready печатает что всё ок. Но on_message будто не вызывается — пишу команду в чат, бот молчит. Кода вроде по гайду.

@client.event
async def on_message(message):
    if message.content == '!привет':
        await message.channel.send('Привет!')

2 ответа

14
✓ Принятый ответ — помог автору

Скорее всего у бота отключён Message Content Intent — самая частая засада у новичков. Без него message.content приходит пустым, и твоё условие == '!привет' никогда не срабатывает.

Чинится в два шага:

  1. В Developer Portal → Bot → пролистай до Privileged Gateway Intents → включи MESSAGE CONTENT INTENT.
  2. В коде явно включи его:
intents = discord.Intents.default()
intents.message_content = True
client = discord.Client(intents=intents)

Перезапусти бота. Теперь message.content будет содержать текст, и команда заработает.

3

Ещё проверь, что в on_message ты не блокируешь свои же сообщения слишком рано и не забыл await. Но в 90% случаев это именно Message Content Intent.

Ваш ответ

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