Практика работы с Telegram
Мониторинг чатов ботом: ключевые слова и webhook на Python
Сбор новых событий в выбранных чатах, поиск по своему каталогу и приём webhook. Готовый учебный обработчик с локальным журналом.
Какие данные доступны примеру
Бот сохраняет новые сообщения из явно выбранных чатов, отмечает совпадения с фразами и может прислать владельцу уведомление. Это полезно для вопросов о продукте в собственном сообществе или для регистрации заявок. Источник данных — события, которые Telegram действительно доставил этому боту.
Пример не выгружает старую историю, удалённые сообщения и чужие закрытые чаты. Изменения сообщений и скачивание медиа в него не включены. Полнота событий зависит от прав бота и настроек приватности.
Скачать Python-примеры с README и лицензией MIT →
В архиве только исходный код и инструкции. Токены, аккаунты и готовые базы пользователей в него не входят. Код бесплатный; компьютер, хостинг и интернет оплачиваются отдельно.
Настройте источник и фразы
{
"post_channels": [],
"monitor_chats": [-1001234567890],
"notify_chat": 123456789,
"keywords": ["доступ к уроку", "вопрос о продукте"],
"catalog": []
}Числа выше — примеры, замените их своими ID. Сначала откройте личный диалог с ботом, чтобы он мог присылать вам уведомления. В monitor_chats включайте только нужные источники. Пустой список keywords не отмечает совпадения. Проверка ищет подстроку без учёта регистра, без морфологии и ИИ-классификации.
python community_bot.py run
python community_bot.py eventsКоманду events запускайте отдельно: она выводит журнал JSON Lines. Каждая строка содержит ID события, чат, ID сообщения, текст, время записи и признак совпадения. Храните журнал вне общедоступной папки.
Поиск чатов через своего бота
Для команды /find заполните catalog: название, публичный адрес t.me и поисковые слова. Бот возвращает до десяти совпадений из этого списка. Так можно дать участникам поиск по учебным группам или каналам вашей сети.
Называть такой каталог глобальным поиском по Telegram нельзя. Он не обнаруживает новые сообщества сам, не получает закрытые приглашения и не заменяет поиск Telegram или парсер пользовательского аккаунта.
Приём webhook
- Разверните WSGI-получатель
webhook_receiver.pyна своём сервере за HTTPS-прокси. Путь —/telegram-webhook. - Задайте BOT_DB и BOT_CONFIG абсолютными путями, TELEGRAM_WEBHOOK_SECRET — отдельным случайным секретом. Команды запуска приведены в README.
- Остановите polling. Зарегистрируйте свой URL через setWebhook с тем же secret_token. Проверьте getWebhookInfo.
- Получатель проверяет заголовок секрета, сохраняет событие и лишь затем возвращает 200. Повтор update_id не создаёт вторую запись.
Polling и webhook — альтернативные способы получения событий одного бота. Переключение не выполняется автоматически. Webhook-получатель только записывает события и очередь; исходящую доставку выполняет отдельная команда.
Доставка и проверка без потери очереди
python community_bot.py deliver
python community_bot.py deliver --executeПервый вызов — просмотр режима. Второй обрабатывает до 20 готовых сообщений. Используйте ту же базу, что и webhook, и один доставляющий процесс. Частоту запуска выбирает владелец сервера; скрытого планировщика в проекте нет.
- Отправьте свою контрольную фразу в разрешённый чат: в журнале должна появиться строка matched=1.
- Повторно передайте то же тестовое событие в локальной среде: строка не должна продублироваться.
- Проверьте отклонение запроса с неправильным секретом.
- Если данных нет, проверьте права, фактический ID чата и доступные боту события до изменения фильтра.
Обработка повторов и проверки webhook выполнены локально. Доступность вашего HTTPS, сертификат и права конкретного бота проверяются при вашем развёртывании.
Источники и документация
Одна платформа · разные задачи
Подписка Telecobra
Соберите инструменты для работы с Telegram в одном кабинете. Сроки доступа, цены и условия — на странице подписки.
В этой инструкции описана только часть возможностей платформы. Полный список доступен в разделе функций.