Телеграм-бот обеспечивает проверку доступности интернет-ресурсов путём обращения к их URL.
- раз в заданный период опрашивается список ресурсов;
- анализируется ответ от ресурсов по кодам HTTP;
- о недоступности ресурсов передаётся сообщение в Telegram по заданным id пользователей;
- об ошибках бота передаётся сообщение в Telegram по заданному id админа;
- имеется 3 кнопки для пользователей:
- подписаться\отписаться на рассылку информации о статусе интернет-ресурсов;
- получить информацию о результатах последней проверки;
- получить информацию об URL проверяемых интрернет-ресурсов и периодичности проверки;
- работа логируется.
- Скопировать репозиторий:
git clone https://github.com/Obshee-Delo-IT/resource-availability-tg-bot.git
cd resource-availability-tg-bot-
создать файл
.envи записать токен учётной записи Телеграм-бота. Формат:TELEGRAM_TOKEN=<token>. Пример заполнения файла см..env.example. -
заполнить файл
setup.cfgпараметрами:
[default]:retry_time- период проверки доступности ресурсов в часах. Формат: целое число от 1 до 99.
[tg_setting]:admin_tg_id- Ид учётной записи Телеграм администратора бота. Вввести Ид одной учётной записи.subscription_tg_ids- Ид учётных записей Телеграм пользователей бота, получающих рассылку сообщений о недоступености ресурсов. Ввести как минимум Ид одной учётной записи.tzone- часовая зона для отображения метки времени последней проверки доступности ресурсов. Формат: в соответствие с названием зоны пакет pytz.endpoints- список URL по которым должна выполняться проверка. Ввести как минимум один URL.
[log_setting]:log_level- название уровня журналирования в соответствие с требованиями пакета logging.log_format- формат сообщений в файле журнала соответствие с требованиями пакета logging.logs_directory_path- директория для хранения файлов журнала.log_size- размер лог-файла в байтах.backup_сount- резервное количество лог-файлов.
Пример заполнения файла см. setup.cfg.example.
- Создать virtual env на hosting, например для timeweb. По сути две команды:
wget https://bootstrap.pypa.io/virtualenv/3.4/virtualenv.pyz
python3 virtualenv.pyz venv- активировать окружение, установить зависимости и запустить через nohup (чтобы не вырубалось от ssh disconnect):
source venv/bin/activate
pip install -r requirements.txt
nohup python3 bot.py > bot.out 2>&1 &При обновлении бота необходимо завершить запущенный бот (например через htop), а затем:
git pull
source venv/bin/activate
nohup python3 bot.py > bot.out 2>&1 &- через терминал в папке проекта создать и запустить виртуальное окружение (далее окружение):
- установить окружение командой
pip install pipenvилиpip install --user pipenv. Дождаться установки. В ответ должно быть сообщено место установки окружения. Проверить информацию об окружении командойpipenv --venv. - активировать окружение командой
pipenv shell. Должно отобразиться сообщение "Launching subshell in virtual environment...". При повторном выполнении команды должно отобразиться сообщение "Shell for C:/<путь к папке с вирт. окружением> already activated". - установить зависимости командой
pipenv sync --dev. По результатам установки должно отобразиться сообщение "All dependencies are now up-to-date!" и в папке окружения~\Lib\site-packagesдолжны установиться требуемые пакеты.
-
из папки проекта запустить модуль через
pipenv run python bot.py. -
Для остановки бота в терминале нажать
Ctrl+Cпри этом использованная версия библиотеки Телеграм не позволяет корректно завершить процесс и для перезапуска требуется запустить новый терминал и выполнить команды:
pipenv shell,pipenv run python bot.py
Перечень зависимостей указан в файле Pipfile.
Больше информации о виртуальном окружении pipenv по ссылке https://pipenv.pypa.io/en/latest/.