Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Repository files navigation

Клон бота @siteshot_bot

Бот для Telegram
В ответ на присланный url делает скриншот сайта, сохраняет его на диск (volume) и присылает в ответном сообщении
Может показать информацию WHOIS и GeoIP для сайта
Запускается в контейнере Docker Для работы используются контейнеры Redis, PostgreSQL, Rabbitmq (для очереди задач)

Использование

Docker

  • файл .env.example переименовать в .env
  • в .env прописать токен своего бота. Если его нет - следуйте инструкции
  • создать контейнеры командой make build (если они еще не созданы)
  • запустите контейнеры командной make run (запуск контейнеров с ботом, БД, Redis)
  • для остановки контейнеров используйте команду make stop

Локальный запуск (dev)

  • файл .env.local.example переименовать в .env.local
  • в .env.local прописать токен своего бота. Если его нет - следуйте инструкции
  • создать контейнеры командой make build-dev (если они еще не созданы)
  • запустите контейнеры командной make run-dev (запуск контейнеров с ботом, БД, Redis)
  • установите зависимости make install
  • установите зависимости для playwright - playwright install --with-deps chromium
  • запустите бота make bot-run
  • запустите воркер (если нужно) make worker-run
  • для остановки контейнеров используйте команду make stop-dev

Описание настроек

Настройки бота задаются в .env (при запуске локально - .env.local)

  • BOT_TOKEN - токен бота
  • BOT_DEBUG - (True/False) режим отладки
  • BOT_PAGE_TIMEOUT - время в миллисекундах для ожидания загрузки сайта
  • BOT_DROP_UPDATES_ON_START - (True/False) отбрасывать ли старые сообщения в момент запуска бота
  • TELEGRAPH_TIMEOUT - время в секундах ожидания при загрузке файла картинки на сервер Telegraph
  • BOT_WORKER_USED - (True/False) использовать ли воркеры. Если нет, основной бот будет делать сам всю работу
  • BOT_MAX_TASKS - количество одновременно открываемых страниц одним ботом/воркером

Описание команд

  • /start - выводит информацию о боте
  • /stat - выводит статистику запросов к боту - за день и текущий месяц

Описание бота

Бот использует библиотеку aiogram
Для получения скриншотов страниц используется библиотека playwrigth
Скриншоты запрошенных сайтов сохраняются в директорию по умолчанию /data (можно изменить в config.py)
Скриншоты загружаются на telegra.ph и в ответном сообщении скидывается ссылка на них.
Поддерживается два языка сообщений - русский и английский. Текст сообщений задан в locales.py Бот запоминает выбранный язык пользователя и сохраняет в базу. Чтобы не дергать каждый раз базу - используется кэш Redis. Для одного экземпляра бота решение избыточное, но при работе с воркерами будет полезным. Воркер - отдельный экземпляр (или экземпляры) бота, который получает задание от основного бота, делает скриншот, сохраняет данные на диск, и отправляет ответ в чат

Для работы бота в чатах необходимо, чтобы бот мог читать сообщения в чате. Для этого

Перейдите в BotFather, напишите команду /mybots и выберите нужного бота.
Перейдите в Bot Settings → Group Privacy.
Выберите Turn off.
Должна появиться фраза Privacy mode is disabled for Bot.

Проблемы:

  • Тесты! - нет ни одного:(
  • получение скриншота на некоторых сайтах просто падает
  • некоторые сайты (ya.ru) принимают за робота (так оно и есть) и требуют решать капчу

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages