3.44M
Категория: ПрограммированиеПрограммирование

Программирование под API web-сервисов

1.

Программирование под
API web-сервисов
Знакомство с Telegram bot API
Библиотека pytelegrambotapi

2.

Telegram
▪ Создан в 2013 году
▪ Представлен на практически всех современных мобильных
платформах;
▪ Имеет версию для ПК (Telegram Desktop). Поддерживает
Windows / GNU Linux / macOS;
▪ Одна из самых крупных платформ для ботов
2

3.

Telegram
3

4.

Telegram
▪ Регистрация осуществляется по
номеру мобильного телефона.
▪ При регистрации через клиент, на
телефон приходит SMS с кодом
авторизации
4

5.

Регистрация бота
Для регистрации нужно найти в поиске контакт
“BotFather”
Или перейти по URL: https://telegram.me/botfather
5

6.

Регистрация бота
6

7.

Регистрация бота
/newbot – команда регистрации
Входные данные
▪ Имя бота (любое)
▪ Логин бота (уникальное, заканчивается на bot.
Выходные данные
▪ Токен для авторизации бота
После регистрации бота можно будет найти по ссылке: https://telegram.me/<login_бота>
или в поиске по имени
7

8.

Токен
Пример токена:
1621840900:AAFzEyGvpfolq-rv03BDcCASyB-iVjvRapM
Внимание: хранить в секрете, никому не давать!
Если токен скомпрометирован, пишем боту @botfather
▪ команда /revoke – отзыв старого токена
▪ команда /token – создание нового токена
8

9.

После регистрации
▪ /setabouttext добавляет боту текстовое описание, которое
пользователь может посмотреть в профиле бота (до 200
символов);
▪ /setdescription добавляет боту краткое описание (что он
делает), которое отображается при добавлении бота в контактлист в начале работы (до 512 символов);
▪ /setuserpic устанавливает в качестве аватарки бота
картинку, которую вы ему вышлете.
9

10.

Telegram bot API
Документация тут: https://core.telegram.org/bots/api
Пример запроса:
https://api.telegram.org/bot<здесь_токен_бота>/getMe
Возвращает JSON с данными
10

11.

Telegram bot API
Ещё пример:
https://api.telegram.org/bot<здесь_токен_бота>/getUpdates
Возвращает JSON с сообщениями
11

12.

Telegram bot API
Ещё пример:
https://api.telegram.org/bot<здесь_токен_бота>/getUpdates
Возвращает JSON с сообщениями
Надоело общаться низкоуровневыми запросами?
12

13.

Telegram bot API
Ещё пример:
https://api.telegram.org/bot<здесь_токен_бота>/getUpdates
Возвращает JSON с сообщениями
Надоело общаться низкоуровневыми запросами? Мне тоже.
13

14.

Библиотека pyTelegramBotAPI
Высокоуровневая объектно-ориентированная реализация
Telegram Bot API на языке Python.
Документация и исходники:
https://github.com/eternnoir/pyTelegramBotAPI
Установка:
pip install pytelegrambotapi
14

15.

Библиотека pyTelegramBotAPI
Инициализация
from telebot import TeleBot
bot = TeleBot("сюда пишется токен")
15

16.

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

17.

Библиотека pyTelegramBotAPI
На каждый тип сообщения или команды создаётся отдельная функцияобработчик.
Пример:
@bot.message_handler(content_types=["text"])
def recieve_message(msg):
bot.send_message(msg.chat.id, msg.text)
17

18.

Библиотека pyTelegramBotAPI
На каждый тип сообщения или команды создаётся отдельная функцияобработчик.
Пример:
Обрабатывает только
текстовые сообщения
@bot.message_handler(content_types=["text"])
def recieve_message(msg):
bot.send_message(msg.chat.id, msg.text)
Указание получателя
сообщения
Текст сообщения
(по сути, эхо-бот)
18

19.

Библиотека pyTelegramBotAPI
Запуск бота:
if __name__ == '__main__':
bot.polling(none_stop=True)
Бот войдёт в режим ожидания сообщений
19

20.

Библиотека pyTelegramBotAPI
Полный код
from telebot import TeleBot
bot = TeleBot("Здесь токен бота")
@bot.message_handler(content_types=["text"])
def recieve_message(msg):
bot.send_message(msg.chat.id, msg.text)
if __name__ == '__main__':
bot.polling(none_stop=True)
20

21.

Библиотека pyTelegramBotAPI
Задача: вести статистику по количеству сообщений,
присланных боту с момента его включения
Решение: словарь.
users = {}
@bot.message_handler(content_types=["text"])
def recieve_message(msg):
global users
if not (msg.chat.id in users):
users[msg.chat.id] = 0
bot.send_message(msg.chat.id, "Да вы у нас впервые!")
bot.send_message(msg.chat.id, "Добро пожаловать!")
users[msg.chat.id] += 1
bot.send_message(msg.chat.id,
f"Вы написали {users[msg.chat.id]} сообщений")
21

22.

Библиотека pyTelegramBotAPI
Обработка команд бота
@bot.message_handler(commands=['start'])
def send_welcome(message):
bot.reply_to(message, "Howdy, how are you doing?")
22
English     Русский Правила