Обращение к телеграмм боту на пайтон

Существует телеграмм бот. Задача написать скрипт ,который сможет отправлять запрос боту и получать ответы .Нужно чтобы скрипт работал без установленного на компе телеграмма. Язык - Python 3 . Подскажите пожалуйста возможно ли это , какие библиотеки использовать. (использовать в скрипте логин/парроль пользователя нельзя)


Ответы (1 шт):

Автор решения: DeNRuDi

По правде говоря, непонятно для чего нужен такой подход разработки бота, и скорее действительно РАБОЧЕЕ решение создать невозможно, но тем не менее можно реализовать что-то подобное, но не настолько как вы задумали.

По сути можно таки реализовать примерно, то что вы хотите костылем (я бы даже назвал костылищем) - создать публичную группу, настроить права боту, получить идентификатор supergroup, и удалить всех юзеров из группы, тогда да - в таком случае действительно не нужен ни один аккаунт в Telegram, чтобы отправить куда-то сообщение, но по сути клиента для взаимодействия с ботом нет, и напрашивается вопрос - зачем вам монолог? Поэтому правильным и единственным решением нужен хотя бы один аккаунт, а точнее chat_id (логин и пароль никуда ботом не передаются и не используются, только идентификаторы чата).

API Telegram, как и все остальные - это клиент-серверное решение. То есть клиент что-то отравляет серверу, после этого сервер выдает результат и потом информация отдается клиенту. Поэтому можно предположить, что без клиента подобная задача в принципе невозможна.

Давайте заглянем в официальную документацию элементарно к самому простому методу для отправки простых сообщений sendMessage. Можно увидеть, что id пользователя (то есть клиента) есть обязательным при отправке сообщения

Исходя из этого - нужен хотя бы один аккаунт в Telegram-e для взаимодействия с ботом. Если нужно отправить в группу/канал - используются отрицательные идентификаторы, например -10011234567890 НО! Как вы должны знать, управление ботом происходит через API, то есть используется json-объекты. Исходя из этого - не обязательно использовать готовые библиотеки для разработки ботов, по сути это обертки над методами Telegram, все они построены на одном и том же принципе, который я описал выше - отправка на сервер данных клиентом, и их получение. Как говорится - за нас уже все сделали, упростив нам жизнь, простым смертным:). Но если вы сильны духом, вам преграды не страшны, и хотите пойти тяжелым путем, то есть описать все желаемые для вас методы (в этом нет особого смысла, потому что их за нас уже написали) поэтому затронем только некоторые методы для реализации примера.

Боты могут работать 2 разными способами - один через getUpdates, а второй через webhook. Вы можете сами погуглить про long_polling и webhook для ботов, так как это доступно будет описано по первой же ссылке в гугле, я в это вдаваться не буду, возьму для простоты getUpdates.

Чтобы отправить в чат/группу сообщение, нужно отправить POST-запрос на сервер Telegram. Реализуем это через простой в использовании requests

Простой пример отправки сообщения:

import requests

token = 'ваш токен'
data = {'chat_id': 'Ваш id', 'text': 'Test message'}
r = requests.post(f'https://api.telegram.org/bot{token}/sendMessage?', data=data)
print(r.json())
# и далее ваше взаимодействие с `json`-объектом

Простой пример получения сообщения, которые отправлял пользователь боту:

import requests

token = 'ваш токен'
# data_offset = {'offset': 1234567801}
r = requests.post(f'https://api.telegram.org/bot{token}/getUpdates')  #, data=data_offset)
print(r.json())

data_offset нужен для того, чтобы подтвердить на сервере Telegram, что вы ответили на это сообщение. Но чтобы ответ оказался подтвержденным - нужно инкрементировать offset на единицу больше, то есть отправить data_offset = {'offset': 1234567802}

Это в двух словах, как это работает. Чтобы это все реализовать - вам понадобится не один, и даже два дня.

Так что совет - переконструируйте архитектуру вашей задачи. У меня все:)

→ Ссылка