Repo template: https://github.com/dimadem/telegram_chatbot_w_media_boilerplate
Дерево нашего бота:
Библиотеки:
telegram_chatbot_boilerplate/
│
├── config/
│ ├─── openai_client.py
│ ├─── telegram_bot.py
│ └─── tokens.py
│
├── handlers/
│ ├── __init__.py
│ ├── command_handlers.py
│ └── message_handlers.py
│
├── utils/
│ ├── __init__.py
│ └── helpers.py
│
├── app.py
├── Dockerfile
├── Makefile
└── requirements.txt
config/
- конфигурационные файлыhandlers/
- обработчики сообщений и командutils/
- вспомогательные функцииapp.py
- главный файл приложенияDockerfile
- скрипт для создания Docker образаMakefile
- автоматизация процесса сборкиrequirements.txt
- зависимости проекта
- нажми кнопку справа сверху USE THIS TEMPLATE
- назови проект
- контент в репозитории будет использоваться для хакатона
Для локальной установки проекта потребуется:
- подключение к VPN серверу для доступа к API OpenAI
- токен Telegram бота
- токен API OpenAI
- операционная система Linux или MacOS
Для начала нужно получить токен для доступа к HTTP API вашего бота:
- Найдите в Telegram бота
@BotFather
- Отправьте ему команду
/newbot
- Введите имя проекта и имя бота
- Скопируйте полученный токен
- Склонировать репозиторий
git clone github.com/yourreponame
- В
Makefile
введите токены Telegram и OpenAI:TELEGRAM_BOT_TOKEN=1235 OPENAI_API_KEY=1234
- Установка зависимостей, генерация файла
.env
:make setup
-
Запускаем бота локально
make run
-
Открываем Telegram бота и отправляем сообщение
Сообщения в Telegram боте и в терминале дублируются.
-
Для удаления .venv, .env, cache и других временных файлов:
make clean
Для удаленной разработки потребуется:
- Доступ к Серверу (ssh user@ip & password)
- Jupyter Notebook
- Visual Studio Code
- vim
- build-essential
- python3
- python3-venv
- docker-ce
- docker-ce-cli
- docker-buildx-plugin
- docker-compose-plugin
- Заходим на сервер
ssh -i PATH_TO_YOUR_KEY.pem admin@SERVER_IP_ADDRESS
-
Клонируем (по https) свой репозиторий в отдельную папку на сервер
git clone <repositorylink>
-
В
Makefile
введите токены Telegram и OpenAI:TELEGRAM_BOT_TOKEN=1235 OPENAI_API_KEY=1234
-
Установка зависимостей, генерация файла
.env
:make setup
-
Запускаем Jupyter Notebook
make notebook
-
Копируем после token= в заметки:
http://127.0.0.1:8888/tree?token=YOUR_PERSONAL_TOKEN
-
На своем персональном устройстве создаем туннель:
ssh -NL 8888:localhost:8888 root@SERVER_IP_ADDRESS
или (в зависимости от того, как вы залогинены на сервере)
ssh -NL 8888:localhost:8888 admin@SERVER_IP_ADDRESS
также если вы залогинены на сервере с использованием ключа (-i PATH_TO_YOUR_KEY.pem), его нужно указать при создании тунеля
- Открываем в браузере;
http://localhost:8888
- Вставляем токен, который скопировали на шаге 5, в поле "Password or token" и нажимаем Login.
- Пользуемся
Для деплоя контейнера на облачный сервер потребуется:
- Скаченная программа Docker
- Аккаунт в DockerHub
- Создать репозиторий
- токен Telegram бота
- токен API OpenAI
- операционная система Linux или MacOS
-
В
Makefile
добавим к уже имеющимся токенам, username и repositoryname:# данные пользователя на Docker Hub USERNAME=UserNameDockerHub REPO=RepositoryNameDockerHub TAG=v1 TELEGRAM_BOT_TOKEN=1235 OPENAI_API_KEY=1234
Для публикации образа в DockerHub нужно залогиниться через CLI командой docker login
-
Собираем образ под Linux Debian:
make build
-
Запускаем контейнер с приложением
make dockerrun
-
Также, можно опубликовать образ в DockerHub:
make push
-
Находим опубликованный образ в DockerHub:
docker search username/projectname
-
Скачиваем образ:
docker pull username/projectname:v1
-
Запускаем контейнер с токенами Telegram бота и OpenAI API:
sudo docker run -i -t -e TELEGRAM_BOT_TOKEN=YOURTOKEN -e OPENAI_API_KEY=YOURTOKEN username/projectname:v1
-
Открываем Telegram бота и отправляем сообщение
Сообщения в Telegram боте и в терминале дублируются.