← Все вопросы

Как ответить именно на сообщение пользователя (reply), а не просто написать в канал?

Задан 19 месяцев назад707 просмотров1 ответ
6

Бот пишет ответ в канал, но это просто новое сообщение. Хочу, чтобы он отвечал «цитатой» на конкретное сообщение человека, как кнопка «Ответить» в Discord. Как это сделать в discord.py?

1 ответ

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

Вместо channel.send(...) используй message.reply(...) — это даёт ту самую привязку-цитату к сообщению:

@bot.event
async def on_message(message):
    if message.author == bot.user:
        return
    if message.content == '!пинг':
        await message.reply('Понг!')          # ответит цитатой
        # await message.reply('Понг!', mention_author=False)  # без пинга
    await bot.process_commands(message)

mention_author=False отвечает цитатой, но не пингует автора.

Важный нюанс: если ты переопределил on_message, обязательно в конце вызови await bot.process_commands(message), иначе обычные команды (@bot.command()) перестанут работать.

Ваш ответ

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