10. Telegram боты
Обращение к боту происходит с помощью GET или POST запроса вида:
https://api.telegram.org/bot*токен_вашего_бота*/*название метода*?*параметр метода*=*значение*&*параметр метода*=*значение*...
К примеру: https://api.telegram.org/bot1234567890:AAAAaaA0aaAaaa0A0AAa0AaaAaaaa0aaAaa/sendMessage?chat_id=656597957&text=hello
Список всех методов есть в документации, но вам потребуются не все. Самые полезные:
1. getMe
- От сюда можно получить различную информацию о боте.
2. getUpdates?offset=*число*&timeout=*количество секунд*
- Без этого метода вы не сможете
никак узнать, что вашему боту написали. Offset - номер последнего обработанного события, первый вызов можно сделать 0, но дальше вам нужно следить, какие события вы обработали, иначе сервер вам будет отправлять события, которые отправлял раньше. Timeout
- количество секунд, которое сервер ждут, если нет событий. По окончанию сервер отправит пустой список событий.
3. sendMessage?chat_id=*число*&text=*текст*
- Отправляет сообщение человеку (или боту) с индентификатором chat_id с соотв. текстом.
4. https://core.telegram.org/bots/api#editmessagetext
Совершать запросы можно с помощью команды из библиотеки requests:
import requests
nachStroka = "https://api.telegram.org/bot5989105828:AAGBrnE2zfBgdy8Q5TKi3CpzVfxxn3shGsg"
def send(id, txt):
result = requests.get(nachStroka+"/sendMessage?chat_id="+str(id)+'&text=' + txt)
#result = requests.get(nachStroka+"/sendMessage?chat_id=656597957&text=q")
offset = 0
while True:
result = requests.get(nachStroka+"/getUpdates?offset=" + str(offset) + '&timeout=100').json()
for update in result['result']:
try:
text = update['message']['text']
id = update['message']['from']['id']
if text[:6] == '/print':
for x in text[6:].split():
send(id,x)
except KeyError:
pass
offset = update['update_id'] + 1
|
https://core.telegram.org/bots/api -Официальная документация, всегда в помощь.
Мой chat_id=656597957