Найти тему
programmer's notes (python and more)

Программирование на языке python. Создание бота для Telegram с помощью библиотеки telebot

Доброго времени суток, читатели, зрители моего канала programmer's notes. Не забывайте подписываться и писать свои комментарии к моим статьям и видео.

Пример telegram-бота на языке программирования python

Для приложения python, управляющей telegram-ботом необходима библиотека. Библиотек, в действительности, довольно много. Мы в качестве примера возьмём модуль telebot.

Установить библиотеку можно так

pip3 install pytelegrambotapi

Для использования библиотеки в начале программы нужна строка

import telebot

Бот в мессенджере Telegram по сути, это специальный аккаунт, который может управляться программой. Вы можете создать произвольное количество ботов, управлять ими с помощью одной или нескольких программ. Сегодня мы рассмотрим каркас программы, управления ботом.

Прежде чем писать программу необходимо создать аккаунт бота в Telegram. Для этого служит специальный бот @BotFather. Достаточно дать ему команду /newbot и ответить на два вопроса: имя бота и имя пользователя бота, и бот будет создан. При этом вам будет выдан TOKEN - уникальный код, для доступа к вашему боту. Именно с помощью этого ключа ваша программа и будет получать доступ к этому, созданному вами специальному аккаунту. Кстати, вы может в дальнейшем обращаться к @BotFather, чтобы менять настройки созданным вами аккаунтов-ботов. Помощь, как обычно принято, можно получить командой /help (команды для ботов начинаются с символа '/').

Ниже представлена простая программа управления ботом Telegram. Работают команды: /help - помощь, /reg - регистрация пользователя. Зарегистрированный пользователь может написать своё имя в чате и получить приветствие бота.

Поскольку программа относительно велика, она представлена двумя скриншотами. Текст, как обычно, можно получить по ссылке ниже.

Рисунок 1. Начало программы. Функции работы с регистрацией. Весь текст программы см. ниже по ссылке
Рисунок 1. Начало программы. Функции работы с регистрацией. Весь текст программы см. ниже по ссылке
Рисунок 2. Остальная часть программы. Обработка команд, сообщений и запуск опроса. Весь текст программы ниже по ссылке
Рисунок 2. Остальная часть программы. Обработка команд, сообщений и запуск опроса. Весь текст программы ниже по ссылке
primer327.py

Ниже (рисунок 3) показан ответ бота на ввод зарегистрированного имени.

Пояснение и обсуждение программы

  • Программа начинает работу с создания объекта-бота. bot = telebot.TeleBot('token');. В дальнейшем используются методы этого объекта. Как видим, для создания бота требуется токен, получение которого мы описали выше.
  • Для запуска бота (запуска опроса сервера Telegram) используется метод polling(). none_stop=True - не прекращать опрос, даже если получении ошибки от сервера, interval=0 - неограниченное время.
  • Для обработки сообщений в библиотеке telebot используются декораторы. У нас объявляются два обработчика: обработчик команд и обработчик сообщений. Глянув на текст программы, вы должны понять, что в принципе можно оставить только один обработчик: сообщений. По традиции команды в Telegram начинаются с '/'. В декораторе указываются типы сообщений, которые будет принимать функция-обработчик:
    @bot.message_handler(commands=['help', 'reg'])
    def get_com(ms):

    в обработчик попадают только две команды
    /help и /reg.
    @bot.message_handler(content_types=['text'])
    def get_text_messages(ms):

    а здесь только текстовые сообщения.
  • Из сообщения (объекта) можно получить идентификатор пользователя:
    id = ms.from_user.id
    на основе этого идентификатора можно отправить пользователю сообщение: bot.send_message(id, 'Сообщение') или картинку bot.send_photo().
  • В программе реализован простейший механизм регистрации пользователя. В списке nms хранится информация о регистрации. В каждой записи хранится идентификатор пользователя и и его имя. Регистрация происходит за два шага: в начале в список вносится идентификатор и пустая строка вместо имени. Потом имя. После регистрации можно записать имя и появится ответ (см. Рисунок 3). Я надеюсь сам алгоритм регистрации и проверки не должен вызвать у вас сложности.
  • Можно совершенствовать бот до бесконечности. Например, хранить зарегистрированных пользователей во внешней базе. Тогда после перезапуска бота список зарегистрированных пользователей сохранится.

Вообще написание ботов увлекательная штука. У меня где-то валяется бот, который я не закончил. Он предоставляет простейшие инструменты удалённого управления компьютером. Управлять можно, естественно, и с телефона.

рисунок 3. Ответ бота на введение зарегистрированного имени
рисунок 3. Ответ бота на введение зарегистрированного имени

Ну пока всё!

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

-4