Простой 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=-1

И получаем 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_message():
    result = requests.get(f'https://api.telegram.org/bot{TOKEN}/getUpdates?offset=-1').json()
    return result['result'][0]

def set_message(text, chat_id):
    requests.get(f'https://api.telegram.org/bot{TOKEN}/sendMessage?chat_id={chat_id}&text={text}').json()

def check_message(text):
    if text.lower() == 'привет':
        return 'Здравствуйте :)'
    else:
        return 'Я есть грут'

def run():
    update_id = get_message()['update_id']
    while True:
        time.sleep(1)
        message = get_message()
        if update_id != message['update_id']:
            text = check_message(message['message']['text'])
            set_message(text, message['message']['chat']['id'])
            update_id = message['update_id']

if __name__ == '__main__':
    run()


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

Telegram bot python

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

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


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