电报机器人“未找到聊天”
Posted
技术标签:
【中文标题】电报机器人“未找到聊天”【英文标题】:Telegram Bot "chat not found" 【发布时间】:2017-05-01 16:27:26 【问题描述】:我在 Python 中有以下代码,可以从机器人向自己发送消息。
import requests
token = '123456789:ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHI'
method = 'sendMessage'
myuserid = 1949275XX
response = requests.post(
url='https://api.telegram.org/bot0/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
我做错了什么?我通过将/getid
发送到@myidbot
获得了myuserid
,我从@BotFather
获得了我的令牌
【问题讨论】:
您需要先写信给机器人,然后机器人才能向您发送消息。 什么是get id 命令?也许它不是用户 ID 和它的机器人 ID 他的意思是@myidbot,它确实返回了用户ID。 @Maak 当我写信给机器人时,我会立即得到关于默认命令的答案。 @Maak 你如何给机器人写信? 【参考方案1】:正如@maak 所指出的,您需要先向机器人发送消息,然后机器人才能向您发送消息。
【讨论】:
我们如何获得他们机器人的名字?【参考方案2】:有一种方法可以将通知消息发送到电报。这有点棘手,但教程很棒!
http://bernaerts.dyndns.org/linux/75-debian/351-debian-send-telegram-notification
我刚刚将我的 apache 状态的消息发送到私有通道。 也可以在公共频道上使用,但这不是我想要的。当您调用脚本 (bash) 时,您可以使用任何脚本语言准备参数。
希望对您有所帮助。
【讨论】:
链接失效【参考方案3】:如果您尝试向群组发送消息,则必须在您的聊天 ID 前添加一个“-”。 例如:
TELEGRAM_REG_CHAT_ID="1949275XX"
应该是
TELEGRAM_REG_CHAT_ID="-1949275XX"
【讨论】:
事实并非如此。您需要先向机器人发送消息,然后它才能向您发送消息 这不是问的。特别是组 ID 以-100
开头。
这对我也有用 - 这是否记录在任何地方?【参考方案4】:
我在chat_id 的值之前使用前缀@,就像到处建议的那样。我删除了它并开始工作。 注意:如果您的聊天 ID 是 12345678,那么您需要在它前面加上 -100,这样它就是 -10012345678。 邮递员调用示例:
/sendMessage?chat_id=-10012345678&text=Let's get together
【讨论】:
这应该在 Telegram 文档中更新。在找到解决方案之前,我浪费了数小时尝试各种事情。 添加 -100 是完全错误的。你为什么要这样做?他想给私人聊天写信。组 ID 以 -100 开头。您不能只添加它,因为您会尝试向随机、未知的群组或频道发送消息。 这对我有用。可能是因为所讨论的组属于“超级组”类型。【参考方案5】:对我来说,它只适用于频道 ID 之前的 @
前缀
【讨论】:
【参考方案6】:如果您使用用户名,则不需要任何前缀。这意味着以下内容不正确:
https://t.me/vahid_esmaily_ie
t.me/vahid_esmaily_ie
这是正确的情况:
vahid_esmaily_ie
【讨论】:
【参考方案7】:如果你想在频道中使用机器人消息,你可以参考这里的步骤
步骤:
-
创建 Telegram 公共频道
通过 BotFather 创建 Telegram BOT(例如
x_bot
)
将x_bot
设置为您频道的管理员
chat_id 是@x_bot
,它是https://t.me/x_bot
的一部分,不会添加您的频道名称。
【讨论】:
以上是关于电报机器人“未找到聊天”的主要内容,如果未能解决你的问题,请参考以下文章