Доброго времени суток, читатели, зрители моего канала programmer's notes. Не забывайте подписываться и писать свои комментарии к моим статьям и видео.
Пример telegram-бота на языке программирования python
Для приложения python, управляющей telegram-ботом необходима библиотека. Библиотек, в действительности, довольно много. Мы в качестве примера возьмём модуль telebot.
Установить библиотеку можно так
pip3 install pytelegrambotapi
Для использования библиотеки в начале программы нужна строка
import telebot
Бот в мессенджере Telegram по сути, это специальный аккаунт, который может управляться программой. Вы можете создать произвольное количество ботов, управлять ими с помощью одной или нескольких программ. Сегодня мы рассмотрим каркас программы, управления ботом.
Прежде чем писать программу необходимо создать аккаунт бота в Telegram. Для этого служит специальный бот @BotFather. Достаточно дать ему команду /newbot и ответить на два вопроса: имя бота и имя пользователя бота, и бот будет создан. При этом вам будет выдан TOKEN - уникальный код, для доступа к вашему боту. Именно с помощью этого ключа ваша программа и будет получать доступ к этому, созданному вами специальному аккаунту. Кстати, вы может в дальнейшем обращаться к @BotFather, чтобы менять настройки созданным вами аккаунтов-ботов. Помощь, как обычно принято, можно получить командой /help (команды для ботов начинаются с символа '/').
Ниже представлена простая программа управления ботом Telegram. Работают команды: /help - помощь, /reg - регистрация пользователя. Зарегистрированный пользователь может написать своё имя в чате и получить приветствие бота.
Поскольку программа относительно велика, она представлена двумя скриншотами. Текст, как обычно, можно получить по ссылке ниже.
Ниже (рисунок 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). Я надеюсь сам алгоритм регистрации и проверки не должен вызвать у вас сложности.
- Можно совершенствовать бот до бесконечности. Например, хранить зарегистрированных пользователей во внешней базе. Тогда после перезапуска бота список зарегистрированных пользователей сохранится.
Вообще написание ботов увлекательная штука. У меня где-то валяется бот, который я не закончил. Он предоставляет простейшие инструменты удалённого управления компьютером. Управлять можно, естественно, и с телефона.
Ну пока всё!
Пишите свои предложения и замечания, и занимайтесь программированием, а также проектированием баз данных, хотя бы для поддержания уровня интеллекта.