Skip to content

peterder72/lebedev_bot

Repository files navigation

Лебедев Бот

Описание

Простой бот, который делает картинки с Лебедевым по шаблону. Использует API основы или Telegram для двух разных версий бота.

Пример картинки

Программа работает на Python 3.6+ с использованием Pillow для создания картинки.

Установка

Для запуска скрипта сначала необходимо установить необходимые библиотеки:

python3 -m pip install -r requirements.txt

Также, для авторизации необходимы токены Основы (Telegram) и Imgur. Они должны находиться в файле auth.env (исключен из системы контроля версий). Формат файла указан ниже.

TJ_TOKEN=XXXXXXX
IMGUR_CLIENT=XXXXXX
TG_TOKEN=XXXXXXXX

Далее инструкции разные в зависимости от платформы, на которой находится бот.

TJ

Запусакете lebedev_tj.py. Всё.

Во время первого запуска скрипт создаст файл конфигурации, чтобы не заспамить все прошлые комментарии, где вас упоминали.

Telegram

Для работы бота на Telegram необходим сервер с публичным IP и действительным сертификатом (требование Telegram, судя по всему).

Чтобы быстро запустить обе части бота, можно использовать docker/docker-compose.yaml, который построит два Docker-образа, сразу полностью запускающие бота. Обе части можно запускать и раздельно, пользуясь командами,указанными в Dockerfile для обоих частей.

Принцип работы

TJ

Скрипт каждые 10 секунд проверяет все упоминания себя через систему уведомлений TJ. Из-за того, что система прочтения уведомлений работает нестабильно (вообще не работает), скрипт создает файл config.json, где хранит ID последнего прочитанного уведомления. Во время первого запуска бот пропускает все упоминания, так как API Основы может вернуть все упоминания с самого создания аккаунта (или введения упоминаний, смотря что было раньше).

Функция получения уведомлений возвращает список упоминаний, с которыми уже можно работать. Скрипт создает картинку с помощью PIL в файле mememaker.py, и загружает ее на Imgur с анонимным токеном. API Основы отказалось принимать картинки через /uploader/upload и постоянно возвращало 400, из-за чего и был вставлен этот костыль.

Telegram

Бот состоит из двух частей:

  1. Сервер, который генерирует картинки и хранит их в кэше. Путь кэша по умолчанию указан в docker/Dockerfile-tgserver, его можно спокойно менять.
  2. Клиент Telegram, который принимает сообщения и отвечает картинкой со ссылкой на сервер.

Такая архитектура была выбрана для ускорения времени отклика программы и для соответствия требованиям API Telegram.

Сначала отправляется запрос на /generate с JSON-параметром phrase, сервер при этом создает картинку и сохраняет её в кэше. При последующих обращениях файлы картинок запрашиваются по MD5 хэшу (добавить соль?) через /img.

Еще в разработке

  • Аргументы командной строки
  • Более гибкая регулярка
  • Еще больше обработки ошибок
  • Более простой Docker
  • Логи
  • Подчистка структуры и импортов
  • Подчистка кода класса Бота TJ

About

Бот Лебедев для TJ

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages