Giter Site home page Giter Site logo

telegram_chatbot_boilerplate's Introduction

Предисловие

Туториал поможет развернуть чат-бота Telegram, использующего API OpenAI, как локально, так и в Docker контейнере на облачном сервере.

Библиотеки:

Структура проекта

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 - зависимости проекта

Часть 0: Создание репозитория

  • нажми кнопку справа сверху USE THIS TEMPLATE
  • назови проект
  • контент в репозитории будет использоваться для хакатона

Часть 1: Локальная установка

Для локальной установки проекта потребуется:

  • подключение к VPN серверу для доступа к API OpenAI
  • токен Telegram бота
  • токен API OpenAI
  • операционная система Linux или MacOS

Токен Телеграм бота

Для начала нужно получить токен для доступа к HTTP API вашего бота:

  1. Найдите в Telegram бота @BotFather
  2. Отправьте ему команду /newbot
  3. Введите имя проекта и имя бота
  4. Скопируйте полученный токен

Установка проекта

  1. В Makefile введите токены Telegram и OpenAI:
    TELEGRAM_BOT_TOKEN=1235
    OPENAI_API_KEY=1234
    
  2. Установка зависимостей, генерация файла .env:
    make setup
    

Запуск проекта

  1. Запускаем бота локально

    make run
    
  2. Открываем Telegram бота и отправляем сообщение

    Сообщения в Telegram боте и в терминале дублируются.

  3. Для удаления .venv, .env, cache и других временных файлов:

    make clean
    

Часть 2: Разработка на облачном сервере

Для удаленной разработки потребуется:

  • Доступ к Серверу (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

Удаленная разработка

  1. Клонируем свой репозиторий в отдельную папку на сервер

    git clone <repositorylink>
    
  2. В Makefile введите токены Telegram и OpenAI:

    TELEGRAM_BOT_TOKEN=1235
    OPENAI_API_KEY=1234
    
  3. Установка зависимостей, генерация файла .env:

    make setup
    
  4. Запускаем Jupyter Notebook

    make notebook
    
  5. Копируем после token= в заметки:

    http://127.0.0.1:8888/tree?token=YOUR_PERSONAL_TOKEN
    
  6. На своем персональном устройстве создаем туннель:

    ssh -NL 8888:localhost:8888 root@serverIpAddress
    
  7. Открываем в браузере;

    http://localhost:8888
    
  8. Вставляем токен, который скопировали на шаге 5, в поле "Password or token" и нажимаем Login.

  9. Пользуемся


Деплой Docker контейнера

Для деплоя контейнера на облачный сервер потребуется:

  1. В Makefile добавим к уже имеющимся токенам, username и repositoryname:

    # данные пользователя на Docker Hub
    USERNAME=UserNameDockerHub
    REPO=RepositoryNameDockerHub
    TAG=v1
    TELEGRAM_BOT_TOKEN=1235
    OPENAI_API_KEY=1234
    

Для публикации образа в DockerHub нужно залогиниться через CLI командой docker login

  1. Собираем образ под Linux Debian:

    make build
    
  2. Публикуем образ в DockerHub:

    make push
    

Скачивание и запуск образа

  1. Находим опубликованный образ в DockerHub:

    docker search username/projectname
    
  2. Скачиваем образ:

    docker pull username/projectname:v1
    
  3. Запускаем контейнер с токенами Telegram бота и OpenAI API:

    sudo docker run -i -t -e TELEGRAM_BOT_TOKEN=YOURTOKEN -e OPENAI_API_KEY=YOURTOKEN username/projectname:v1
    
  4. Открываем Telegram бота и отправляем сообщение

    Сообщения в Telegram боте и в терминале дублируются.

telegram_chatbot_boilerplate's People

Contributors

dimadem avatar emeli-dral avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.