Создайте Telegram-бота на Python за 30 минут

Разработка 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

Создание бота и получение токена

Для взаимодействия с ботом необходим его токен. Чтобы получить его:

  1. Откройте Telegram и найдите бота BotFather.
  2. Используйте команду /newbot.
  3. Придумайте имя для бота (без пробелов и специальных символов), например, ITProgerTestBot.
  4. 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.

Что будем искать? Например,программа