Сегодня покажем вам пример, как сделать могучий бэкенд без особой потребности во фронтенде. Сейчас объясним.
Почти все сервисы, приложения и сайты работают по такой схеме:
- Есть фронтенд, который отвечает за внешнюю и визуальную часть. Обычно под фронтендом мы понимаем сайт. Но также им может быть приложение или чат-бот.
- Есть бэкенд, который отвечает за логику работы и хранение данных. Обычно бэкенд — это программа на сервере, которая обрабатывает запросы с фронтенда.
Сегодня мы сделаем для собственного телеграм-бота полноценный бэкенд, который будет делать какие-то простые вещи. Так у нас получится полноценный сервис, который состоит в основном из бэкенда. Придётся сделать это в несколько частей, но мы с вами справимся. Сегодня элементарный шаг.
Первый шаг: создание бота
Создадим нового телеграм-бота и посмотрим, что он умеет делать, если не настраивать вообще ничего. Для этого в Телеграме находим канал @BotFather (он отвечает за регистрацию новых ботов), нажимаем там Start
и пишем команду /newbot
. Нас по очереди спросят про название бота и его никнейм, после чего дадут нового бота и токен для управления им. Токен сохраним, он пригодится чуть позже.
У нас появился новый бот — @thecode_test_bot. При запуске нас сразу встречает кнопка «Старт» — нажмём и посмотрим, что произойдёт:
Ничего не случилось: бот получил команду /start, но не сделал ничего по этому поводу. Теперь попробуем что-то написать:
Сейчас бот ничего не умеет и не реагирует на наши действия. Это всё из-за того, что у нас сейчас есть только фронт (Телеграм), но нет бэка — внутренней логики бота. Попробуем это исправить и посмотрим, что получится.
Второй шаг: запуск бэкенда
Чтобы было проще, весь бэкенд мы сделаем не на сервере, а у себя на компьютере. Единственное, что нам понадобится для этого, — установленный Python и наша статья про телеграм-бота.
Для простоты мы сейчас научим бота реагировать на базовую команду /start
— с неё начинаются все боты в Телеграме. Возьмём код из статьи, выкинем из него всё лишнее и добавим в него функцию, которая будет обрабатывать эту команду.
Обратите внимание, что в коде мы будем использовать библиотеку telebot. Чтобы она у вас появилась, нужно её установить. Для этого в терминале используется такая команда:
$ pip install pyTelegramBotAPI
Ещё нам понадобится токен, который мы получили в момент создания бота. Токен позволяет соединить фронтенд в виде телеграм-чата с бэкендом — то есть с нашим скриптом. Для этого копируем токен и вставляем его в соответствующую переменную. Делиться этим токеном нельзя — если его кто-то узнает, то сможет управлять вашим ботом.
Итак, простой бэкенд-скрипт для бота:
# подключаем модуль для Телеграма
import telebot
# указываем токен для доступа к боту
bot = telebot.TeleBot(123456789:AAAAA12345678abcdef12345678abcdef')
# приветственный текст
start_txt = 'Привет! Это журнал «Код». \n\nТеперь у бота появился бэкенд.'
# обрабатываем старт бота
@bot.message_handler(commands=['start'])
def start(message):
# выводим приветственное сообщение
bot.send_message(message.from_user.id, start_txt, parse_mode='Markdown')
# запускаем бота
if __name__ == '__main__':
while True:
# в бесконечном цикле постоянно опрашиваем бота — есть ли новые сообщения
try:
bot.polling(none_stop=True, interval=0)
# если возникла ошибка — сообщаем про исключение и продолжаем работу
except Exception as e:
print('❌❌❌❌❌ Сработало исключение! ❌❌❌❌❌')
Запускаем этот скрипт у себя на компьютере и отправляем боту заново команду /start. В ответ получаем текст, который только что прописали в скрипте. Это значит, что бэкенд работает и теперь бот умеет реагировать на свой старт:
При этом на всё остальное бот ещё не умеет реагировать, потому что мы это не прописывали в бэкенде:
Что получилось
- На нашем компьютере работает программа, которая исполняет функции бэкенда.
- В Телеграме у нас запущен бот, который исполняет функции фронтенда.
- Теперь мы можем докручивать логику бэкенда, чтобы бот по-разному реагировал на разные команды с фронтенда.
Этим мы и займёмся в следующий раз.