Отправка сырых API запросов на телеграм для ботов на питоне
Задача реализовать телеграм бот на питоне через сырые HTTP запросы. Основная часть функционала реализована - GET, POST запросы с шифровкой SSL для отправки через HTTPS. Но вот задача отправлять ответы на сообщения пользователя пока недостигнута.
Момент, когда пользователь отбавил боту сообщение. Есть id чата. И нужно собрать HTTP запрос, в котором будет API с ответом. Через браузер запрос выглядит так:
https://api.telegram.org/bot<TOKEN>/sendMessage?chat_id=<ID_чата>&text='hello'
Такой запрос работает. Даже больше - через фаерфокс есть и сам запрос:
GET /bot<TOKEN>/sendMessage?chat_id=<ID_чата>&text="hello" HTTP/1.1
Host: api.telegram.org
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/119.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Upgrade-Insecure-Requests: 1
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: none
Sec-Fetch-User: ?1
Pragma: no-cache
Cache-Control: no-cache
Но вот на него бот не реагирует. Отправляет запрос такой код:
def client():
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
url = 'api.telegram.org'
context = ssl.SSLContext(ssl.PROTOCOL_TLSv1_2)
s_sock = context.wrap_socket(sock, server_hostname=url)
s_sock.connect((url, 443))
s_sock.send(<запрос в байт строках>)
data = s_sock.recv(512)
print(data.decode())
s_sock.close()
sock.close()
Сам код отправки рабочий - успешно отправляет запросы с API getMe.