Простой Telegram бот на Python, метод getUpdates
Ramas, 2020-05-28

Простой Telegram бот на Python, метод getUpdates

Всем привет, в этой статье я покажу как сделать самого простого Telegram бота с помощью всем известной python библиотеки requests, используя метод getUpdates.

Requests - это библиотека Python HTTP, выпущенная под лицензией Apache License 2.0. Цель проекта - сделать запросы HTTP проще и удобнее для человека.

Меньше слов больше дела

Для начала создадим бота и получить токен.

Заходим в Telegram, ищем отца всех ботов @BotFather и с помощью беседы создаем бота.

Telegram bot python

Находим нашего бота, и напишем ему "привет!"

Telegram bot python

Готово, самый скучный этап пройден, идем дальше.

Telegram API

Теперь самое интересное, поиграемся немного с API, перейдем по ссылке ниже используя свой токен.

https://api.telegram.org/bot<ваш_токен>/getUpdates?offset=10

И получаем JSON ответ с последним отправленным нами сообщением боту (если ответ пустой, отправьте своему боту любое сообщение, и повторите попытку).

Telegram bot python

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

https://api.telegram.org/bot<ваш_токен>/sendMessage?chat_id=792035400&text=Приветствую
Telegram bot python
Пишем код

С методами getUpdates, и sendMessage API Telegram мы разобрались, напишем программу которая научит нашего бота отвечать на сообщение (приветствие).

import requests
import time
#ТОКЕН
TOKEN = 'ТОКЕН'

def get_messages():
    # Функция использует метод getUpdates и возвращает массив объектов
    result = requests.get(f'https://api.telegram.org/bot{TOKEN}/getUpdates?offset=10').json()
    return result['result']

def set_message(chat_id, text):
    # Функция использует метод sendMessage для отправки текстовых сообщений
    requests.get(f'https://api.telegram.org/bot{TOKEN}/sendMessage?chat_id={chat_id}&text={text}')

def check_message(message):
    # Проверяем текст сообщения отправленное боту
    if message.lower() in ['привет', 'hello']:
        return 'Привет :)'
    else:
        return 'Я не понимаю('

def run():
    update_id = get_messages()[-1]['update_id'] # Присваиваем ID последнего отправленного сообщения боту
    while True:
        time.sleep(1)
        messages = get_messages() # Получаем обновления
        for message in messages:
            # Если в обновлении есть ID больше чем ID последнего сообщения, значит пришло новое сообщение
            if update_id < message['update_id']:
                update_id = message['update_id'] # Присваиваем ID последнего отправленного сообщения боту
                # Отвечаем тому кто прислал сообщение боту
                set_message(message['message']['chat']['id'], check_message(message['message']['text']))

if __name__ == '__main__':
    run()

Запустим, все работает отлично.

Telegram bot python

Дополнительную информацию о методах вы можете получить в документации, для больших проектов рекомендуется использовать webhooks.

Комментарии отсутствуют


Чтобы оставить комментарий Вам необходимо зарегистрироваться или войти