
Как я сделал Telegram-бота для анонимных вопросов
Оглавление
Я сделал бота «Анонимные вопросы», чтобы автор канала мог собирать сообщения от подписчиков и отвечать на них прямо в Телеграме. У владельца одна персональная ссылка, а бот связывает каждый вопрос с его отправителем и доставляет ответ.
В этой статье — история разработки: какой сценарий я выбрал, как устроил переписку и что пришлось учесть при работе с медиа и удалением сообщений.
Нужны конкретные шаги? Откройте инструкцию: как пользоваться ботом анонимных вопросов.

Попробовать
Анонимные вопросы
Персональная ссылка для вопросов и ответы внутри Телеграма.
Задача: обратная связь без отдельного сайта
Авторам каналов, экспертам и консультантам нужна простая возможность собирать вопросы. Внешняя форма заставляет читателя переходить на другой сайт, а затем автору ещё нужно придумать, как вернуть ответ собеседнику.
Я оставил весь путь внутри Телеграма. Человек открывает опубликованную ссылку, пишет сообщение и получает ответ в том же боте. Отдельная регистрация и личный кабинет для этого не нужны.

Одна ссылка вместо сложной настройки
У каждого пользователя есть постоянный код. Бот добавляет его к своей ссылке и по этому коду определяет получателя. В самой ссылке нет Telegram ID владельца.
Такую ссылку можно разместить в нескольких постах, профиле или закрепе. Публикации меняются, а адрес для вопросов остаётся тем же. На стартовом экране я оставил две основные кнопки: скопировать ссылку и поделиться ею.
Самое важное — не перепутать диалоги
Основная работа происходит после отправки вопроса. Боту нужно запомнить связь между отправителем, получателем и конкретным сообщением, а затем доставить ответ нужному человеку.
Для этого я сохраняю маршрут каждого диалога. Когда владелец отвечает через reply, бот находит исходный вопрос и его отправителя. Пользовательские данные и маршруты хранятся в базе, поэтому перезапуск сервиса не должен обрывать связь с уже доставленными вопросами.
Для следующего сообщения предусмотрена кнопка «Написать ещё». Человеку не приходится возвращаться в канал и заново искать ссылку.
Медиа, длинные сообщения и удаление
Текст — только один из форматов. Я добавил фотографии, видео, голосовые, кружки, стикеры, документы, аудио и анимации. Для каждого типа бот должен правильно передать содержимое и сохранить возможность ответа.
Длинные вопросы и подписи к медиа приходится делить на части из-за ограничений Телеграма. Поэтому сервис учитывает каждую доставленную часть отдельно. Если отправилась только часть содержимого, он не сообщает о полном успехе.
Это же важно для кнопки удаления: бот должен удалить у получателя все известные части вопроса. Только после подтверждения он очищает текст и ссылку на медиа в рабочей базе. При ошибке оставляет возможность повторить попытку.
Что с приватностью
В обычном пользовательском сценарии бот передаёт вопрос без имени и профиля автора. Но это не сервис с гарантией полной анонимности: администратору доступны данные переписки, а для одного специального аккаунта получателя в реализации предусмотрен показ автора.
Содержание сообщения тоже может раскрывать человека. Голос, лицо на фотографии или подпись не становятся неузнаваемыми от того, что доставлены через бота.
Из чего собран сервис
Бот написан на Python и aiogram 3. Пользователи, вопросы и маршруты ответов хранятся в SQLite, для асинхронной работы с базой используется aiosqlite. С Телеграмом сервис общается через Bot API в режиме long polling.
На сервере процесс запускается через systemd. Соединение с базой и HTTP-сессия закрываются при остановке приложения, чтобы обычное обновление не превращалось в зависший перезапуск.
Что получилось
Получился небольшой продукт с понятным основным сценарием: получить ссылку, собрать вопросы и ответить. Дополнительно доступны статистика сообщений и переходов, помощь и отправка идеи разработчику.
Попробовать его можно в Телеграме: @vopros1otvet_bot.
Пошаговая инструкция со скриншотами: ссылка, вопросы, ответы, статистика и удаление.
Если вам нужен сервис под собственный сценарий, посмотрите, как устроена разработка Telegram-ботов под ключ.


