Telegram не могу отправить сообщение боту

Главная — Вопросы по программированию — Как я могу отправить сообщение телеграфному боту с помощью python?

Как я могу отправить сообщение телеграфному боту с помощью python?

  • Post author: admin
  • Запись опубликована: 17 января, 2022
  • Post category: Вопросы по программированию

#python #telegram #telegram-bot

Вопрос:

Я ищу способ отправить сообщение боту с помощью другого бота. У меня есть API этих двух ботов. Библиотека, которую я использую, — это telebot, и с помощью приведенных ниже кодов я могу отправить сообщение на канал или любые учетные записи, но я не знаю, как я могу получить идентификатор чата бота.

bot = telebot.TeleBot(TOKEN) bot.send_message(yourID, ‘your_message’)

1. Если это одноразовое действие, перешлите одно из сообщений первого бота второму боту, сохраните идентификатор чата внутри второго бота (я думаю, что был способ сохранить идентификатор пересылаемых сообщений), и все готово.

2. спасибо, я получил свой идентификатор бота, но я не смог отправить бота боту, я получаю эту ошибку, telebot.apihelper. Исключение ApiTelegramException: Запрос к API Telegram не удался. Код ошибки: 403. Описание: Запрещено: бот не может отправлять сообщения ботам

Unblock Telegram Instantly with this C# Spambot Tutorial!

Ответ №1:

Похоже, что для этого нет конкретного способа, и telegram по некоторым причинам ограничивает взаимодействие между ботами. Однако вы можете использовать ловкий трюк.
Вы можете создать фиктивную учетную запись в качестве своего рода посредника для взаимодействия. Используя API Telegram (не путать с API бота), вы можете создать службу автоматической переадресации сообщений для фиктивного пользователя, чтобы просто переслать сообщение от бота А боту Б. Следовательно, вы создаете нужное соединение.
Одним из таких примеров TelegramAPI является телемарафон. Проверьте здесь пример использования API. Вы также можете ознакомиться здесь с документацией по телемарафону.

1. Миллион раз спасибо, не могли бы вы объяснить на примере?

2. Я отредактировал ответ и добавил пример TelegramAPI, который вы можете использовать.

Источник: programbox.ru

Еще по теме:  Как войти в ТГ если не помнишь почту

Я не могу отправлять сообщения пользователям ботов Telegram, кроме себя

Почему я не могу отправить сообщение своим пользователям-ботам?

filename = ‘a.png’ url = «https://api.telegram.org/botxxxxx:yyyyyyyyyyyyy/sendPhoto»; files = data = r = requests.post(url, files=files, data=data) print(r.status_code, r.reason, r.content) data = r = requests.post(url, files=files, data=data) print(r.status_code, r.reason, r.content) data = r = requests.post(url, files=files, data=data) print(r.status_code, r.reason, r.content)

Я пытаюсь отправить сообщение трем пользователям, первый — это я, владелец бота, и я могу получить сообщение. 2 других аккаунта уже отправили сообщение боту. но результаты такие:

Как включить своему телеграм-боту возможность писать сообщения в группу


(200, ‘OK’, ‘,»chat»:,»date»:1542626038,»photo»:[,,,]>>’) (400, ‘Bad Request’, ») (400, ‘Bad Request’, »)
19.11.2018 12:15

Оператор pass в Python — это простая концепция, которую могут быстро освоить даже новички без опыта программирования.

Python — самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science.

Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это

Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.

Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вы открываете файл в четвертой строке с помощью

files =

Первый вызов request.post , вероятно, закрывает дескриптор файла, тем самым не делая его доступным для второго и третьего request.post .

Сообщение об ошибке, которое вы опубликовали, содержит необходимую информацию. Чтобы исправить это, просто повторно открывайте файл перед публикацией данных каждый раз.

Редактировать: Wombatz прав, requests.post читает до конца файла.

Еще по теме:  Как вычислить паспортные данные через Телеграм

Вот как можно перейти к началу файла:

files[‘photo’].seek(0)
19.11.2018 12:22

Проблема в том, что requests.post читает файл, но не сбрасывает его в начальную позицию, как можно видеть здесь: В строке 159 происходит чтение.

Итак, ваш первый post работает, но все последующие запросы будут отправлять в Telegram файл пустой. На самом деле это именно то, что телеграмма сообщает вам с «Bad Request: file must be non-empty» : вы отправляете пустой файл.

Это означает, что для того, чтобы отправить один и тот же файл несколько раз, вы можете либо повторно открыть файл, либо перейти к его началу, либо — поскольку вы все равно читаете файл — передать содержимое файла непосредственно в requests (вероятно, лучший решение трех) вот так:

with open(filename, ‘rb’) as photo: files = # note that we actually read() the file here for user in all_the_users_you_want_to_send_the_file_to: requests.post(url, files=files, . )

Обратите внимание, что это работает, потому что requests также принимает строку вместо файлового объекта. Таким образом, файл читается только один раз, что может быть быстрее в зависимости от размера файла. (подробнее см. документация)

Также обратите внимание, что вы действительно должен должны использовать оператор with при чтении или записи файлов.

requests закрывает файл нет, когда это делается. В этом случае вы увидите сообщение об ошибке, например

ValueError: read of closed file

Источник: reddeveloper.ru

Я не могу отправлять сообщения пользователям ботов Telegram, кроме себя

Почему я не могу отправить сообщение пользователям моего бота?

filename = ‘a.png’ url = «https://api.telegram.org/botxxxxx:yyyyyyyyyyyyy/sendPhoto»; files = data = r = requests.post(url, files=files, data=data) print(r.status_code, r.reason, r.content) data = r = requests.post(url, files=files, data=data) print(r.status_code, r.reason, r.content) data = r = requests.post(url, files=files, data=data) print(r.status_code, r.reason, r.content)

Я пытаюсь отправить сообщение 3 пользователям, во-первых, я, владелец бота, и я могу получить сообщение. 2 других аккаунта уже отправили сообщение боту. но результаты таковы:

Еще по теме:  Каа в Телеграме всегда входить по смс

(200, ‘OK’, ‘,»chat»:,»date»:1542626038,»photo»:[,,,]>>’) (400, ‘Bad Request’, ») (400, ‘Bad Request’, »)
ehsan shirzadi 19 Ноя 2018 в 14:15

2 ответа

Лучший ответ

Вы открываете файл в четвертой строке

files =

Первый вызов request.post , вероятно, закрывает дескриптор файла, не делая его доступным для второго и третьего request.post .

Отправленное вами сообщение об ошибке содержит необходимую информацию. Чтобы это исправить, просто заново открывайте файл, прежде чем публиковать данные каждый раз.

Редактировать: Wombatz правильно requests.post читает в конец файла.

Вот как вы будете искать начало файла:

files[‘photo’].seek(0)
Ananth 19 Ноя 2018 в 20:20

Проблема в том, что requests.post читает файл, но не сбрасывает его в исходное положение, как видно на здесь: в строке 159 происходит чтение.

Итак, ваш первый post работает, но все последующие запросы будут отправлять в Telegram пустой файл. На самом деле это именно то, что телеграмма сообщает вам с помощью «Bad Request: file must be non-empty» : вы отправляете пустой файл.

Это означает, что для того, чтобы отправить один и тот же файл несколько раз, вы можете либо повторно открыть файл, либо перейти к его началу, либо — поскольку вы все равно читаете файл — передать содержимое файла непосредственно в requests (вероятно, лучшее решение из трех) вот так:

with open(filename, ‘rb’) as photo: files = # note that we actually read() the file here for user in all_the_users_you_want_to_send_the_file_to: requests.post(url, files=files, . )

Обратите внимание, что это работает, поскольку requests также принимает строку вместо файлового объекта. Таким образом, файл читается только один раз, что может быть быстрее в зависимости от размера файла. (см. документацию подробнее)

Также обратите внимание, что вам действительно следует использовать оператор with при чтении или записи файлов.

requests не закрывает файл по завершении. В этом случае вы увидите сообщение об ошибке, например

ValueError: чтение закрытого файла

Источник: question-it.com

Рейтинг
( Пока оценок нет )
Загрузка ...