Бытрый поиск
Search

Как создать и запустить Telegram бота

Для настройки услуги вам необходимо:

  1. Установить SSH подключение к серверу для конфигурации
  2. Установить SFTP подключение для обмена файлами на сервер.
  3. Создать Telegram бота с помощью встроенных функций Telegram
  4. Запустить скрипт бота в Docker контейнере

1. SSH-подключение

Реквизиты доступа к серверу высланы вам на регистрационный email.
Воспользуйтесь любым, удобным для вас, ssh-клиент для подключения (cmd, PuTTY, xShell, etc…).
Используйте данные подключения root к серверу.
В примере будет использован стандартный Windows CMD
Для подключения введите команду
ssh root@IP-сервера

Примите ключ
Введите пароль.
Обратите внимание, в Linux системах при вводе пароля символы не отображаются.

При выводе приветствия – подключение выполнено.

2. SFTP

Используйте FileZilla для обмена файлами между локальным ПК и сервером.
Хост – sftp://IP_сервера
Логин – root
Пароль – от сервера.
Порт – 22

3. Создайте персонального бота на примере Telegram.

Войдите в Telegram и введите в поиск – BotFather (https://telegram.me/BotFather),
Используйте команду - /newbot
Введите индентификатор бота.
Введите имя бота без спецсимоволов и с окончанием _bot
Cохраните токен нового бота.

4. Запустите ваш скрипт в Docker на сервере.

Пора задействовать все инструменты для запуска бота.
Загрузите ваш скрипт в папку контейнера.
Для примера используем Python скрипт.
Чтобы запустить скрипт в Docker-контейнере, вам потребуется создать Docker-образ и контейнер для вашего приложения.
Создайте директорию для вашего проекта – telegrambottemplate, и поместите в нее PHP-скрипт (например, telegram_bot.py).

import telebot
# Ваш токен бота, который вы получите у BotFather в Telegram
BOT_TOKEN = 'YOUR_BOT_TOKEN'
# Инициализация бота
bot = telebot.TeleBot(BOT_TOKEN)
# Обработчик команды /start
@bot.message_handler(commands=['start'])
def handle_start(message):
bot.send_message(message.chat.id, "Привет, я ваш Telegram-бот!")
# Обработчик текстовых сообщений
@bot.message_handler(func=lambda message: True)
def handle_text(message):
bot.send_message(message.chat.id, f"Вы написали: {message.text}")
if __name__ == "__main__":
bot.polling(none_stop=True)

Создайте файл Dockerfile для создания Docker-образа. Вот простой пример Dockerfile:

# Используйте официальный образ Python
FROM python:3.8
# Установите необходимые библиотеки
RUN pip install pyTelegramBotAPI
# Копируйте скрипт бота в контейнер
COPY telegram_bot.py /app/telegram_bot.py
# Укажите команду для запуска бота
CMD ["python", "/app/telegram_bot.py"]

Теперь вы можете собрать Docker-образ, используя команду docker build. Перейдите в директорию с Dockerfile и выполните следующую команду.

cd /root/telegrambottemplate
docker build -t my-telegram-bot .

Где my-telegram-bot - это имя вашего Docker-образа.
Запустите Docker-контейнер, используя созданный образ выполнив команду:

docker run -d my-telegram-bot

В результате этой команды будет запущен контейнер, в котором будет выполняться ваш PHP-скрипт. Контейнер будет работать в фоновом режиме (флаг -d).
Теперь ваш Telegram-бот будет работать внутри Docker-контейнера. Вы можете настроить вебхук и обеспечить доступ к контейнеру извне, если это необходимо.
Просмотреть статус контейнера можно командой:

docker ps -a

Вывод

CONTAINER ID NAMES
IMAGE
COMMAND
CREATED
STATUS
PORTS
951c38888db1
telegrambottemplate
"python /app/telegra…"
14 seconds ago
Up
13 seconds
pedantic_dewdney

И сообщение «UP» говорит о нормальной работе контейнера.

Самое время проверить работу бота в Telegram.
Введите имя вашего бота в Telegram или перейдите по ссылке с последнего сообщения GodFather и нажмите кнопку START

Бот принимает команды и отрабатывает по алгоритму.
Вы можете использовать и доработать имеющиеся решения на сервере для создания бота.
Вы можете установить новые, требуемые пакеты для работы вашего проекта.
Благодаря контейнеризации Docker вы можете запустить множество проектов на одном сервере.
Так же это хорошая площадка для тестирования приложений без вреда для основной системы.

Если контейнер даёт ошибку при запуске Вы можете просмотреть лог контейнера.
Для этого выполните команду
docker logs ID
где ID это номер контейнера.

При изменении параметров в скрипт контейнер следует остановить, удалить, перестроить заново с новыми данными и запустить.
Для этого выполните команды:

docker stop ID
docker rm ID
cd /root/telegrambottemplate
docker build -t my-telegram-bot .
docker run -d my-telegram-bot

Подробнее:
https://docs.docker.com/