Швидкий пошук
Search

Як створити та запустити бота в Telegram

Для налаштування сервісу вам потрібно:

  1. Встановити SSH з'єднання з сервером для конфігурації
  2. Встановити SFTP з'єднання для обміну файлами на сервері.
  3. Створити бота в Telegram за допомогою вбудованих функцій Telegram
  4. Запустити скрипт бота в Docker контейнері

1. SSH-з'єднання

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

Прийміть ключ
Введіть пароль.
Зверніть увагу, в Linux системах при введенні пароля символи не відображаються.

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

2. SFTP

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

3. Створіть персонального бота на прикладі Telegram.

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

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

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

import telebot
# Ваш токен бота, який ви отримаєте у BotFather в Telegram
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 секунд тому
Up
13 секунд
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/