Telegram Bot "чат не найден"
У меня есть следующий код в Python, чтобы отправить себе сообщение от бота.
import requests
token = '320835125:AAFUUC-fdo_EFzsCjvmxu8HBk7qVzZXXXXX'
method = 'sendMessage'
myuserid = 1949275XX
response = requests.post(
url='https://api.telegram.org/bot{0}/{1}'.format(token, method),
data={'chat_id': myuserid, 'text': 'hello friend'}
).json()
print(response)
но это возвращается {'description': 'Bad Request: chat not found', 'error_code': 400, 'ok': False}
Что я делаю неправильно? я получил myuserid
отправив /getid
в @myidbot
и я получил свой токен от @BotFather
11 ответов
Как указал @maak, вам нужно сначала отправить сообщение боту, прежде чем бот сможет отправлять вам сообщения.
Я использовал префикс @ перед значением chat_id, как это предлагалось повсюду. Я удалил его, и он начал работать. Примечание: если ваш идентификатор чата - 12345678, вам нужно добавить к нему префикс -100, чтобы он был -10012345678. Пример звонка почтальону:
/sendMessage?chat_id=-10012345678&text=Let's get together
Если вы пытаетесь отправлять сообщения группе, вы должны добавить "-" перед своим идентификатором чата. Например:
TELEGRAM_REG_CHAT_ID="1949275XX"
должно быть
TELEGRAM_REG_CHAT_ID="-1949275XX"
Для меня это сработало только с
@
префикс перед идентификатором канала
Боты Telegram не могут отправлять сообщения пользователю, если этот пользователь еще не начал общение с ботом или бот не присутствует в чате (если это групповой чат). Эта проблема не связана с библиотекой, это просто ограничение Telegram, чтобы боты не могли спамить пользователей без их разрешения.
вам нужно сначала отправить сообщение боту, прежде чем бот сможет отправлять сообщения вам.
У меня были некоторые проблемы с этим после обновления до супергруппы. Chat_id был обновлен, и найти этот новый идентификатор стало немного сложнее.
В конце концов я решил это, следуя этому комментарию: /questions/37120593/kak-poluchat-soobscheniya-v-gruppovyih-chatah-s-pomoschyu-telegram-bot-api/55147573#55147573
Если вы хотите использовать сообщение бота для канала, вы можете обратиться к шагу здесь
Шаги:
- Создайте общедоступный канал Telegram
- Создайте Telegram BOT (например) через BotFather
- Установить
x_bot
как администратор вашего канала
идентификатор чата
@x_bot
, это часть
https://t.me/x_bot
это не добавляет название вашего канала.
Есть способ отправки уведомлений на сообщения в telegram. Это немного сложно, но учебник великолепен!
http://bernaerts.dyndns.org/linux/75-debian/351-debian-send-telegram-notification
Я только что отправил сообщение о своем состоянии Apache в частный канал. Работает также на публичном канале, но это не то, что я хочу. Когда вы вызываете скрипт (bash), вы можете подготовить параметры на любом языке скрипта.
Надеюсь, это поможет.
Если вы используете имя пользователя, оно не требует префикса. Это означает, что следующее неверно:https://t.me/vahid_esmaily_ie , t.me/vahid_esmaily_ie
И это правильный случай: vahid_esmaily_ie
Убедитесь, что вы используете идентификатор пользователя вместо имени пользователя , если отправляете сообщение пользователю.
Из документов :
Чтобы получить идентификатор чата программным способом, ознакомьтесь со способами получения объекта JSON в разделе Получение обновлений .Например, когда пользователь отправляет сообщение,Update
объект будет иметьMessage
объект внутри него, который имеетChat
объект, в котором есть чатid
. Оказывается, идентификатор чата совпадает с идентификатором пользователя.