← Все вопросы

Discord-бот отвечает сам себе и зацикливается — как это убрать?

Задан 18 месяцев назад1.1к просмотров2 ответа
8

Сделал, чтобы бот на любое сообщение отвечал. А он теперь отвечает и на свои собственные ответы, получается бесконечный поток сообщений. Как сделать, чтобы он реагировал только на людей, а не на себя?

2 ответа

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

В самом начале on_message нужно проверить автора и выйти, если это сам бот:

@client.event
async def on_message(message):
    if message.author == client.user:
        return  # игнорируем свои сообщения
    # дальше обычная логика
    if message.content == '!привет':
        await message.channel.send('Привет!')

Бот видит и собственные сообщения как события on_message, поэтому без этой проверки он отвечает сам себе и зацикливается. return в самом верху — обязательная привычка.

5

Если хочешь игнорировать вообще всех ботов (и других тоже), пиши if message.author.bot: return. А message.author == client.user — только про себя.

Ваш ответ

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