电报Bot API:getChatMember为有效用户抛出USER_ID_INVALID

Axe*_*ini 5 api bad-request telegram telegram-bot

我试图找出User超组中是否存在特定对象,以便跟踪那些离开的人。

为此,我getChatMember为每个调用Bot API方法User并检查其状态是否为LeftKicked。但是,我注意到(最近?)我遇到USER_ID_INVALID了许多有效用户的错误,这些用户要么在超组中,要么在过去,然后又离开了。我还确认了那些帐户仍在 Telegram 上处于活动状态

这是我发送的HTTP请求:

POST https://api.telegram.org/botXXXXXXXXX:XXXXXXXXXXXXXXXXXXXXXXXX/getChatMember HTTP/1.1
Connection: Keep-Alive
Content-Type: application/json; charset=utf-8
Content-Length: 46
Host: api.telegram.org

{"chat_id":-0000000000000,"user_id":000000000}
Run Code Online (Sandbox Code Playgroud)

这是我得到的回应:

HTTP/1.1 400 Bad Request
Server: nginx/1.12.2
Date: Fri, 20 Apr 2018 04:17:32 GMT
Content-Type: application/json
Content-Length: 74
Connection: keep-alive
Access-Control-Allow-Origin: *
Access-Control-Expose-Headers: Content-Length,Content-Type,Date,Server,Connection

{"ok":false,"error_code":400,"description":"Bad Request: USER_ID_INVALID"}
Run Code Online (Sandbox Code Playgroud)

无论从哪种角度看,它对我来说都是一个完全有效的要求。而且我还没有找到引发此错误的用户之间的共同模式。

我在这里想念什么?

编辑:正如@sean所指出的那样,让其中一个用户向机器人发送消息会秘密地为该特定用户修复错误。但是我绝对可以确定该用户以前见过,因为这就是我获取其用户ID的方式。是什么原因导致漫游器“忘记”了他,我又如何防止这种情况将来发生?

Sea*_*ean 5

此错误意味着您的机器人之前从未见过此用户。

例如,我的用户 ID 是109780439,您可以尝试getChatMember使用@PublicTestGroup,它应该响应400 错误

然后,将我的任何消息(例如,this)转发到您的机器人,您将看到不同的结果:)

  • 谢谢回复。我明白你说的,但我认为事实并非如此。我知道我的机器人至少见过这些用户**一次**,因为这就是我知道他们的用户 ID 的方式。有没有可能机器人“看不见”这些?或者还有其他什么原因会导致这个错误吗? (2认同)