Разработка Telegram-ботов – интересная и прибыльная область программирования. За один урок вы освоите создание ботов, от получения токена до обработки сообщений и взаимодействия с пользователем. В этом руководстве используется Python, но полученные знания применимы и к другим языкам (C#, Java, JavaScript и др.). Python выбран за простой синтаксис, ускоряющий и упрощающий разработку.
Популярность и перспективы Telegram-ботов
Сфера разработки Telegram-ботов популярна, многие компании стремятся к созданию собственных ботов и ищут квалифицированных разработчиков. Изучение разработки займёт всего пару дней (без учёта изучения самого языка программирования). После небольшой практики можно брать заказы на фрилансе. Telegram-боты – относительно новая и доступная область. Здесь мы рассмотрим построение ботов, получение данных от пользователя, создание кнопок и добавление функционала.
Настройка среды разработки
Установка Python и IDE
Скачайте последнюю версию Python с официального сайта и установите её. Вам также понадобится IDE, например, PyCharm. Создайте новый проект и файл для кода.
Установка библиотеки python-telegram-bot
Для работы с Telegram API используется библиотека python-telegram-bot. Установите её с помощью pip:
pip install python-telegram-bot
Импортируйте библиотеку в ваш файл:
import telepot
Создание бота и получение токена
Для взаимодействия с ботом необходим его токен. Чтобы получить его:
- Откройте Telegram и найдите бота BotFather.
- Используйте команду /newbot.
- Придумайте имя для бота (без пробелов и специальных символов), например, ITProgerTestBot.
- BotFather выдаст токен. Скопируйте его.
Создайте переменную в коде и сохраните в ней токен:
bot = telepot.Bot('YOUR_BOT_TOKEN') # Замените YOUR_BOT_TOKEN на ваш токен
Настройка бота (опционально)
С помощью BotFather можно настроить:
- /setname – изменить имя бота.
- /setabouttext – установить описание.
- /setuserpic – загрузить аватарку.
Обработка команд и сообщений
Отслеживание команд
Для отслеживания команд используется декоратор @bot.message_handler(commands=[‘start’, ‘help’]):
@bot.message_handler(commands=['start'])
def handle_start(msg):
bot.sendMessage(msg['chat']['id'], "<b>Привет!</b>", parse_mode='html')
Этот код обрабатывает команду /start и отправляет сообщение «Привет!». parse_mode=’html’ позволяет использовать HTML-теги (например, <b> для жирного шрифта).
Обработка текстовых сообщений
Для обработки текста:
@bot.message_handler(content_types=['text'])
def handle_text(msg):
text = msg['text']
if text == 'hello':
bot.sendMessage(msg['chat']['id'], 'И тебе привет!')
elif text == 'id':
bot.sendMessage(msg['chat']['id'], f"Твой ID: {msg['from']['id']}")
else:
bot.sendMessage(msg['chat']['id'], 'Я тебя не понимаю')
Этот код реагирует на «hello» и «id».
Обработка файлов
Для обработки файлов (фото, видео, аудио):
@bot.message_handler(content_types=['photo'])
def handle_photo(msg):
bot.sendMessage(msg['chat']['id'], 'Вау, крутое фото!')
Этот код обрабатывает отправку фотографий.
Создание кнопок
Встраиваемые кнопки (inline_keyboard)
Для встраиваемых кнопок используется telepot.namedtuple.InlineKeyboardMarkup и telepot.namedtuple.InlineKeyboardButton:
markup = telepot.namedtuple.InlineKeyboardMarkup(inline_keyboard=[
[telepot.namedtuple.InlineKeyboardButton(text='Посетить веб-сайт', url='https://itproger.com')]
])
bot.sendMessage(msg['chat']['id'], 'Перейдите на сайт', reply_markup=markup)
Функциональные кнопки (reply_keyboard)
Для функциональных кнопок используется telepot.namedtuple.ReplyKeyboardMarkup и telepot.namedtuple.KeyboardButton:
markup = telepot.namedtuple.ReplyKeyboardMarkup(keyboard=[
[telepot.namedtuple.KeyboardButton(text='Веб-сайт')],
[telepot.namedtuple.KeyboardButton(text='Старт')]
], resize_keyboard=True, one_time_keyboard=True)
bot.sendMessage(msg['chat']['id'], 'Выберите действие', reply_markup=markup)
Запуск бота
Для запуска бота в режиме постоянной работы:
bot.message_loop(run_forever='true')
Запустите скрипт командой python main.py.
Теперь вы умеете создавать простые Telegram-боты на Python. Дальнейшее развитие зависит от ваших знаний Python и желания изучать новые библиотеки и API.