Найти в Дзене
ВВТС

Учимся создавать простых ботов или туториал по библиотеке TeleBot

Оглавление

Начнем с того, что библиотек для разработки телегам-ботов на Python несколько, я упомяну основные три. В первой части статьи будет небольшой обзор этих библиотек (примеры кода тут будут для красоты, не пугайтесь, ниже будет пошаговый Гайд по одной конкретной библиотеке), потом комментарий о том, какую стоит выбрать для разработки конкретно своего бота и подробное руководство для новичков по разработке бота с разбором каждой строчки кода.

Интернет считает, что одной из самых распространенных и простых библиотек является python-telegram-bot (хотя я отдаю предпочтение следующим двум).

python-telegram-bot:

  • Официальная библиотека от Telegram для разработки ботов на Python.

  • Предоставляет простой и удобный интерфейс для работы с Telegram API.

  • Поддерживает обработку команд, обновлений, отправку сообщений и многое другое.

  • Содержит детализированную документацию и активное сообщество на GitHub.

Установка:

pip install python-telegram-bot

Пример использования:

from telegram import Update

from telegram.ext import Updater, CommandHandler, CallbackContext

def start(update: Update, context: CallbackContext) -> None:

update.message.reply_text("Здорова, брат! Я бот. Как сам?")

updater = Updater('YOUR_TOKEN')

dp = updater.dispatcher. dp.add_handler(CommandHandler('start', start))

updater.start_polling()

updater.idle()

aiogram:

Асинхронная библиотека для работы с Telegram API.

Предоставляет удобный интерфейс для работы с обновлениями, сообщениями, командами и другими элементами бота.

Поддерживает интеграцию с базами данных, веб-сервисами и другими внешними ресурсами

Установка:

pip install aiogram

Пример использования:

import logging

from aiogram import Bot, Dispatcher, types

from aiogram.types import ParseMode

API_TOKEN = 'YOUR_TOKEN'

logging.basicConfig(level=logging.INFO)

bot = Bot(token=API_TOKEN)

dp = Dispatcher(bot)

@dp.message_handler(commands=['start'])

async def send_welcome(message: types.Message):

await message.reply("Здорова, брат! Я бот. Как сам?")

if __name__ == '__main__':

from aiogram import executor

executor.start_polling(dp,)

aiogram позволяет создавать крутых, многофункциональных коммерческих ботов, но до нее еще нужно дорасти. Вы уже должны отлично владеть навыками написания кода (что-то большее, чем решение задачек на степике) и понимать, что такое асинхронность (что знают даже не все Junior разработчики). Для начала пути в разработке ботов эта библиотека подойдет только разработчикам с опытом.

pyTelegramBotAPI:

Простая библиотека для работы с Telegram Bot API.

Предоставляет удобные функции для отправки сообщений, обработки команд и других событий.

Легко использовать и поддерживать.

Установка:

pip install pyTelegramBotAPI

Пример использования:

import telebot

bot = telebot.TeleBot('YOUR_TOKEN')

@bot.message_handler(commands=['start'])

def handle_start(message):

bot.send_message(message.chat.id, "Здорова, брат! Я бот. Как сам?")

bot.polling(none_stop=True)

Выше вы видите три примера кода, выполняющие одну и туже задачу, но с использованием разных библиотек. Чисто визуально уже можно заметить, что последний код выглядит гораздо проще и это правда. Для старта в разработке и создании простых ботов, и я имею ввиду не просто Привет-Пока, с большой вероятностью если вы разрабатываете бота для себя или даже для своего блога, бизнеса или курсов и он не будет включать в себя авторизацию, функции обработки платежей, работы с огромными базами данных и тысячи пользователей - этой библиотеки вам хватит.

Более того, по опыту мне кажется, именно про эту библиотеку написано больше всего статей, гайдов и видео на ютубе - что для начала изучения самое то.

Туториал по библиотека TeleBot

Шаг 1: Установка библиотеки Telebot

Установите библиотеку Telebot с помощью pip, выполнив команду в командной строке или терминале (ее нужно выполнить только один раз, а не при каждом запуске бота):

pip install pyTelegramBotAPI

Шаг 2: Получите токен доступа для вашего бота

Откройте приложение Telegram и найдите @BotFather - официального бота для создания новых ботов.

Обратите внимание на галочку
Обратите внимание на галочку

Создайте нового бота, следуя инструкциям BotFather.

-3

Получите токен доступа для вашего бота.

нам нужна вот эта строчка из цифр и букв, это и есть токен
нам нужна вот эта строчка из цифр и букв, это и есть токен

Обратите внимание, что в начале последнего сообщения вам еще выдали ссылку на ваш бот - не потеряйте ее.

Шаг 3: Импорт и настройка библиотеки Telebot

Импортируйте библиотеку Telebot в свой код:

import telebot

Создайте объект бота, используя полученный токен:

Вместо 'YOUR_TOKEN' вставляем токен, полученный от BotFather. Так мы свяжем бота, созданного в телеграм с ботом, код которого мы пишем.

bot = telebot.TeleBot('YOUR_TOKEN')

Шаг 4: Создание обработчиков команд и сообщений

Определите функцию-обработчик bot.message_handler для команд и сообщений, которые бот будет получать и обрабатывать (по сути, добавив эту строчку кода над како-либо функцией, мы говорим, что это не просто функция - а специальная функция, которая будет срабатывать когда бот получит какую-то команду, сообщение, стикер, фотографию и тд).

Сейчас мы указали, что данный обработчик будет обрабатывать команду \start (написали в скобках commands = ['start'])и далее описали функцию, которая будет срабатывать при отправке этой команды боту. Наш бот ответит пользователю в чате 'привет-привет! Напиши что-нибудь'.

@bot.message_handler(commands = ['start'])

def start(message):

bot.send_message(message.chat.id, 'привет-привет! Напиши что-нибудь')

bot.send_message - функция отправки ботом сообщения в чат. А вот в какой чат? Нам нужно отправить в тот же, откуда пришло сообщение от пользователя - для этого мы в скобках первым параметром указываем message.chat.id, по сути передаем айди нужного нам чата. А дальше указываем строку-сообщение, которое отправит бот.

Шаг 5: Запуск бота

Запустите бота, чтобы он начал прослушивать события и реагировать на них:

bot.polling()

Соберем весь код в один и запустим.

import telebot

bot = telebot.TeleBot('')

@bot.message_handler(commands = ['start'])

def start(message):

print(message)

bot.send_message(message.chat.id, 'привет-привет! Напиши что-нибудь')

bot.polling(none_stop = True)

Пока код запущен, отправим нашему боту сообщение в Телеграмм - команду /start

Визуально мы увидим вот такую картину

-5

Создадим эхо-бота

Определите функции-обработчики для команд и сообщений, которые бот будет получать и обрабатывать:

@bot.message_handler(commands=['start','help'])

def handle_start(message):

bot.reply_to(message, 'Привет! Я бот.')

@bot.message_handler(func=lambda message: True)

def handle_message(message):

bot.reply_to(message, 'Получено сообщение: ' + message.text)

Первому обработчику мы указали, что он будет обрабатывать команды, конкретно две - то есть функция handle_start, написанная ниже, будет срабатывать и на команду start и на команду help

commands=['start','help']

Во втором обработчике написана страшная строчка message_handler(func=lambda message: True) - она взята из документации и вы часто будете ее видеть.

Если разбирать сложно и подробно: эта строка кода представляет собой использование лямбда-функции для определения, должно ли обработаться входящее текстовое сообщение в телеграм-боте. В данном случае, поскольку лямбда всегда возвращает True, это означает, что все входящие текстовые сообщения будут обрабатываться функцией, к которой применяется эта лямбда.

Если разбирать просто и коротко: ставим эту строчку кода, когда хотим обрабатывать все текстовые сообщения от пользователей, ибо так гласит документация.

bot.reply_to - бот отправляет ответное сообщение на то, что пришло (это когда вы в телеграм тыкаете на сообщение и нажимаете кнопку "ответить" на него). Так как бот отвечает на конкретное сообщение, то мы передаем в скобках не айди чата, а по сути просто то сообщение, на которое нужно ответить и что нужно ответить.

message - аргументом каждой функции (в скобках после названия функции) мы видим message - по сути, это принятое от пользователя сообщение, которое мы функции передаем и она уже может делать с ним все, что хочет - достать текст сообщения (message.text), узнать айди чата (message.chat.id) и еще множество параметров: имя и ник пользователя, время, язык и тд. Сообщения, которые мы отправляем боту, несут не только ту информацию, что мы видим, а ОГРОМНОЕ количество данных о нас.