Similar presentations:
Программирование под API web-сервисов
1.
Программирование подAPI web-сервисов
Знакомство с Telegram bot API
Библиотека pytelegrambotapi
2.
Telegram▪ Создан в 2013 году
▪ Представлен на практически всех современных мобильных
платформах;
▪ Имеет версию для ПК (Telegram Desktop). Поддерживает
Windows / GNU Linux / macOS;
▪ Одна из самых крупных платформ для ботов
2
3.
Telegram3
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