Telegram Bot"找不到聊天"

Bij*_*jan 7 python python-requests telegram 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)
Run Code Online (Sandbox Code Playgroud)

但这会回来 {'description': 'Bad Request: chat not found', 'error_code': 400, 'ok': False}

我究竟做错了什么?我myuserid通过发送/getid@myidbot获得我的令牌@BotFather

NKM*_*NKM 28

我在 chat_id 值之前使用了前缀 @,正如到处所建议的那样。我把它取下来,它就开始工作了。注意:如果您的聊天 ID 是 12345678,那么您需要在其前面加上 -100 前缀,使其变为 -10012345678。邮递员调用示例:

/sendMessage?chat_id=-10012345678&text=Let's get together
Run Code Online (Sandbox Code Playgroud)

  • 这应该在 Telegram 文档中更新。在找到解决方案之前,我浪费了几个小时尝试各种事情。 (2认同)
  • WTF,这东西管用。我不知道为什么以及到底发生了什么在电报服务器开发人员的脑海中,但这确实有效 (2认同)

Bij*_*jan 7

正如@maak所指出的那样,在机器人向您发送消息之前,您需要先向机器人发送消息.

  • 如何做到这一点?我在 Telegram 中打开了机器人页面并输入了一些内容。这没有帮助 (4认同)

Dan*_*ers 5

如果您尝试向群组发送消息,则必须在聊天 ID 前添加“-”。例如:

TELEGRAM_REG_CHAT_ID="1949275XX"
Run Code Online (Sandbox Code Playgroud)

应该

TELEGRAM_REG_CHAT_ID="-1949275XX"
Run Code Online (Sandbox Code Playgroud)

  • 不是这种情况。您需要先向机器人发送消息,然后机器人才能向您发送消息 (2认同)
  • 这个没有问。特别是组 ID 以“-100”开头。 (2认同)