Цель

Разработать Telegram-бота, который будет получать из внешнего API только новые тендерные закупки, соответствующие заданным ключевым словам, и мгновенно отправлять уведомления в Telegram.

Источник данных

REST API aggregator (точное описание источника доверительно предоставляется). Ключ доступа к API хранится в файле .env и не отображается в логах или коде.

Функциональные требования

  1. Частота опроса API
    Интервал опроса настраивается (по умолчанию 10, 30, 60, 120 секунд) с автоматическим снижением частоты после 10 успешных циклов (динамическое управление).
  2. Фильтрация по ключевым словам
    Регистронезависимый поиск в названии, описании или предмете тендера:
    • Битрикс, Битрикс24, Битрикс 24, Битрикс-24
    • 1С-Битрикс, Bitrix, Bitrix24, Bitrix 24, Bitrix-24
    Перед сравнением строка нормализуется: нижний регистр, замена тире и дефисов на “-”, схлопывание лишних пробелов.
  3. Определение новых тендеров
    Тендер считается новым, если его ID из API отсутствует в локальной базе. Если стабильного ID нет, используется хеш-ключ: hash(url + title + deadline + price).
  4. Отправка уведомлений
    Уведомление содержит:
    • Заголовок: “Новый тендер - Bitrix”
    • Название тендера
    • Дата окончания приема заявок (дедлайн)
    • Цена
    • Прямая ссылка на тендер
    Бот должен быть администратором группы или канала.
  5. Команды управления
    • /start - запуск бота и привязка чата
    • /interval [секунды] - установка интервала опроса
    • /keywords - показать текущий список ключевых слов (#Bitrix)
  6. Логирование и надежность
    Каждый цикл опроса логируется в файл: сколько новых тендеров найдено, сколько совпадений по ключевым словам, ошибки вызова API.
    Бот обрабатывает сетевые ошибки API и Telegram, а также повторные подключения.

Создание и регистрация каналов в Яндекс Дзен, ВКонтакте и Telegram

Необходимо зарегистрировать каналы/сообщества в трех популярных российских платформах: Яндекс Дзен, VK и Telegram. Задача включает только техническое создание, без дизайна, контента или дальнейшего наполнения.