← Все вопросы
Discord-бот отвечает сам себе и зацикливается — как это убрать?
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 — только про себя.
Ваш ответ
Войдите, чтобы ответить на вопрос.