Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Telegram 如何确保聊天室id存在?_Telegram_Telegram Bot - Fatal编程技术网

Telegram 如何确保聊天室id存在?

Telegram 如何确保聊天室id存在?,telegram,telegram-bot,Telegram,Telegram Bot,我写了一段代码,把信息发送给电报机器人。为此,我使用通过检索的上一次对话的chat\u id 我的理解是,如果有人通过/start用bot启动了一个会话,则存在一个会话 如何从我的代码发起对话,以确保有可用的聊天id?(=我可以查询转换) 我还确信,对话(如果存在的话)不会无限期地保留(这是请求更新可能产生空结果的另一个原因) 我的理解是,如果有人通过/start通过bot启动了一个会话,则存在一个会话 是的,对话总是: 机器人程序无法启动与用户的对话。用户必须先将其添加到组或向其发送消息。人们

我写了一段代码,把信息发送给电报机器人。为此,我使用通过检索的上一次对话的
chat\u id

我的理解是,如果有人通过
/start
用bot启动了一个会话,则存在一个会话

如何从我的代码发起对话,以确保有可用的
聊天id
(=我可以查询转换)

我还确信,对话(如果存在的话)不会无限期地保留(这是请求更新可能产生空结果的另一个原因)

我的理解是,如果有人通过/start通过bot启动了一个会话,则存在一个会话

是的,对话总是:

机器人程序无法启动与用户的对话。用户必须先将其添加到组或向其发送消息。人们可以使用telegrame.me/链接或用户名搜索来查找您的机器人

请注意,
/start
不是此处的唯一选项

如果您尝试为未开始与bot对话的用户发送消息,您将收到如下消息:
{“确定”:false,“错误代码”:400,“说明”:“错误请求:未找到聊天室”}


如何从我的代码发起对话以确保聊天id可用?(=我可以查询转换)

通常,你不应该为此担心。Bot不会使用
getUpdates
查询特定的用户操作/请求,它会查询所有用户的所有交互,然后根据您提供的内部逻辑决定要做什么

每次在
getUpdates
中收到特定用户的
Update
时,您可能希望将有关用户和/或其请求的信息存储在数据库中

基于此,bot可以做出决定,例如向他发送消息


我还确信,对话(如果存在的话)不会无限期地保留(这是请求更新可能产生空结果的另一个原因)

是的,那个

传入的更新将存储在服务器上,直到bot以任何方式接收到它们,但它们的保存时间不会超过24小时

电报服务器上的
更新
是一个生命周期短的实体

如果您没有保存现有用户的信息,或者丢失了数据库,则无法从电报服务器检索该数据。


注意:作为补充,我建议使用长轮询,如果您使用的是
getUpdates
。最重要的是
getUpdates
方法的
timeout
请求参数:

(timeout是)长轮询的超时(以秒为单位)默认为0,即通常的短轮询。应为正值,短轮询应仅用于测试目的


如前所述,您使用的是短期投票。

感谢您的详细解释,在此之后,我认为我遗漏了一些东西。我打算将电报用作一个消息中心,我的应用程序将发送一条消息(我相信是发送到我创建的bot),然后我将在我的设备上接收该消息,因为我从每个设备启动了与该bot的聊天。在这种情况下,机器人就像一个“中心”,没有任何交互——就像分享“对话”(实际上是我应用程序中的独白)。(续)除了最初的
/start
与机器人接触之外,我的设备将不再与机器人交互。我不确定Telegram是否真的用于此类活动,再想想(与Pushbullet相反),Bot api可以用于多种用途,因此这可能是一个好主意。如果你有你的设备的静态列表,你可以在bot中对它们的id进行编码。如果你有更多的问题,把它们贴在这里,我会尽力回答
id = requests.get(f"https://api.telegram.org/bot{token}/getUpdates").json()['result'][-1]['message']['chat']['id']