Как создать телеграм-бота на Python: инструкция
Наверняка вам уже приходилось сталкиваться с ботами в Telegram. Боты помогают автоматизировать рутинные задачи как для обычных пользователей (например, боты-планировщики или боты для учета финансов), так и для компаний. Последние могут использовать ботов-рекламщиков, которые занимаются рассылками по клиентской базе, ботов-ассистентов, которые выполняют роль технической поддержки, и так далее.
В этой инструкции опишем процесс создания бота в Telegram на Python. В качестве примера создадим Telegram-бот компании Timeweb Cloud, который будет приветствовать пользователя и предлагать ему перейти на сайт компании.
Как создать бота в Telegram на Python пошагово
Шаг 1. Регистрация бота в BotFather
В первую очередь зарегистрируйте бота в Telegram. Для этого введите в поисковой строке мессенджера @BotFather и перейдите к нему, как это показано на картинке ниже.
После нажмите кнопку «Запустить» в нижней части окна и выберите в открывшемся списке команду /newbot
. Бот предложит указать имя создаваемого бота. В нашем случае укажем TimewebCloudBot, и его же продублируем в качестве короткого имени.
После этого бот будет создан.
Надежно сохраните токен бота — в будущем он понадобится для авторизации и работы с ботом.
Шаг 2. Подготовка необходимых компонентов
Переходим к подготовке необходимых компонентов. На вашем компьютере должен быть установлен Python и среда разработки (в нашем случае это PyCharm).
Установить Python на Windows 10 можно по нашей инструкции, а после скачать PyCharm с сайта разработчика и установить его.
В качестве библиотеки мы будем использовать pyTelegramBotAPI. Установить ее можно, с помощью следующей команды:
pip install pyTelegramBotAPI
Все необходимые компоненты установлены. Переходим к следующему шагу.
Шаг 3. Написание кода
В первую очередь подключите установленную библиотеку и уникальный токен, о котором мы говорили выше, а также импортируйте типы, которые потребуются для работы кнопок (о них расскажем немного позже).
import telebot
botTimeWeb = telebot.TeleBot('Уникальный токен')
from telebot import types
Вместо Уникальный токен
укажите токен, который вы получили при регистрации бота. Кавычки необходимо сохранить.
Теперь реализуем так называемые обработчики сообщений. Они отвечают за фильтрацию входящих сообщений бота и вызов указанной функции для этих сообщений.
С помощью кода ниже реализуйте команду /start
, которая будет отвечать за запуск бота:
@botTimeWeb.message_handler(commands=['start'])
def startBot(message):
first_mess = f"<b>{message.from_user.first_name} {message.from_user.last_name}</b>, привет!\nХочешь расскажу немного о нашей компании?"
markup = types.InlineKeyboardMarkup()
button_yes = types.InlineKeyboardButton(text = 'Да', callback_data='yes')
markup.add(button_yes)
botTimeWeb.send_message(message.chat.id, first_mess, parse_mode='html', reply_markup=markup)
Разберем написанный выше код по порядку.
Первые две строчки объявляют метод обработки входящих сообщений. В нашем случае в качестве параметра передается команда /start
.
Далее объявляется переменная first_mess
, хранящая указанную строку. Она будет отображаться пользователю после вызова команды /start
. Здесь также используется объект Message
, необходимый для определения имени (first_name
) и фамилии (last_name
) пользователя.
Далее следуют 3 строчки кода, отвечающие за добавление кнопки, которая в будущем будет перенаправлять пользователя на следующее сообщение. Тип данной кнопки — Inline. Это значит, что такая кнопка будет отображаться прямо под сообщением. Для ее создания необходимо использовать метод InlineKeyboardButton
. Параметр text
отвечает за имя кнопки, а callback_data
— за возвращаемую строку при нажатии. Второй параметр понадобится для реализации функционала кнопки.
И наконец, добавляется метод send_message
, необходимый для отправки сообщения пользователю. У него указаны 4 параметра:
message.chat.id
отвечает за синхронизацию сообщения с чатом бота;first_mess
передает ранее указанное сообщение;parse_mode
необходим для указания режима разметки сообщений;reply_markup
отвечает за добавление созданной кнопки.
Сейчас кнопка создана, но при ее нажатии ничего не происходит. Необходимо реализовать её функционал. Для этого используем следующий фрагмент кода:
@botTimeWeb.callback_query_handler(func=lambda call:True)
def response(function_call):
if function_call.message:
if function_call.data == "yes":
second_mess = "Мы облачная платформа для разработчиков и бизнеса. Более детально можешь ознакомиться с нами на нашем сайте!"
markup = types.InlineKeyboardMarkup()
markup.add(types.InlineKeyboardButton("Перейти на сайт", url="https://timeweb.cloud/"))
botTimeWeb.send_message(function_call.message.chat.id, second_mess, reply_markup=markup)
botTimeWeb.answer_callback_query(function_call.id)
В начале объявляется метод для обработки запросов обратного вызова. Выполняется проверка на соответствие строки, указанной после ==
и возвращенной после нажатия кнопки. Так как ранее мы указали значение параметра callback_data = 'yes'
, то проверка пройдет успешно.
После проверки реализован функционал кнопки. Переменная second_mess
хранит текст ответного сообщения. А далее описана реализация кнопки, которая хранит ссылку на сайт компании Timeweb Cloud.
Последним шагом будет указать боту на то, что обработка команды закончена. Для этого указываем команду answer_callback_query
.
После всех методов необходимо добавить последнюю строчку, которая отвечает за непрерывное продолжение работы бота:
botTimeWeb.infinity_polling()
В итоге у вас должен получиться код со следующей структурой и содержимым:
Бот создан. Сохраните файл с кодом и переходите к его запуску.
Шаг 4. Запуск бота
Откройте терминал и выполните запуск проекта:
python main.py
Теперь бот запущен, можно переходить в Telegram и тестировать его.
Для дополнительной безопасности и стабильности рекомендуется запускать бота на виртуальном сервере. Арендовать надежный облачный сервер можно на Timeweb Cloud.
Шаг 5. Тестирование бота
Откроем Telegram и перейдем к созданному боту, используя поиск и короткое имя, которое указывалось на первом шаге.
Для начала работы нажмем «Запустить» внизу экрана.
Бот обработает команду и выведет приветственное сообщение.
Для продолжения работы с ботом нажмем кнопку под сообщением.
Бот среагирует на нажатие кнопки и выведет следующее сообщение. Под ним также отображается кнопка, которая содержит ссылку на сайт компании. Проверим ее работоспособность.
В ответ на нажатие кнопки бот предложит перейти по ссылке. Нажимаем «Перейти» и переходим на сайт компании.
Заключение
Мы рассмотрели, как создать бота в Telegram на Python пошагово — от его регистрации до запуска. Вы можете не останавливаться на достигнутом, а подробно изучить возможности используемой библиотеки и продолжить наполнять свой первый бот необходимым функционалом.