← Все вопросы

Как сделать эхо-бота, который повторяет любое сообщение?

Задан 12 месяцев назад735 просмотров2 ответа
6

Хочу для тренировки сделать так, чтобы бот повторял за мной любой текст, который я ему пишу (как эхо). Команду /start я уже сделал, а вот как ловить просто любой текст — не понимаю.

2 ответа

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

Эхо-бот — классика для старта. Нужен хендлер, который ловит любое сообщение и отправляет его текст обратно:

import asyncio
from aiogram import Bot, Dispatcher
from aiogram.types import Message

bot = Bot("ТОКЕН")
dp = Dispatcher()

@dp.message()
async def echo(message: Message):
    await message.answer(message.text)

async def main():
    await dp.start_polling(bot)

asyncio.run(main())

@dp.message() без фильтров ловит всё подряд. message.text — то, что прислал пользователь, а message.answer(...) отправляет ответ в тот же чат.

Если хочешь, чтобы бот возвращал ровно то же сообщение (даже стикер или фото), используй await message.copy_to(message.chat.id) вместо answer.

5

Маленькая подсказка: если поставить хендлер /start после этого @dp.message(), то эхо перехватит и команду тоже. В aiogram 3 хендлеры проверяются сверху вниз, поэтому более конкретные (команды, фильтры) ставь выше, а «ловлю всё» — в самом низу.

Ваш ответ

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