我有一个问题,我不知道如何解决它。我正在使用 PHP 和 TDLib 库来管理 Telegram API,为此,我通过 JSON 接口进行异步调用:
https://core.telegram.org/tdlib/getting-started#tdlib-interface
Telegram API 通过更新工作。该程序接收电报更新,必须按照接收顺序正确回答。为此,我有一个适合我的“while”循环脚本。下面是一个算法示例:
void *client = td_json_client_create();
// somehow share the client with other threads, which will be able to send requests via td_json_client_send
const double WAIT_TIMEOUT = 10.0; // seconds
int is_closed = 0; // should be set to 1, when updateAuthorizationState with authorizationStateClosed is received
while (!is_closed) {
const char *result = td_json_client_receive(client, WAIT_TIMEOUT);
if (result) {
// parse the result as JSON object and process it as an incoming update or an answer to a previously sent request
}
}
td_json_client_destroy(client);
好吧,问题是在任何给定时间,API 的更新状态都是“等待电话号码”,此时应该要求用户提供电话号码。随后,在几次更新状态之后,Telegram 向该电话号码发送了一个代码,因此当 API 的状态为"Waiting for the code"时,我的应用程序必须再次要求用户输入收到的代码。
为此,我编写了两种形式,一种用于请求电话号码,另一种用于请求代码。问题是在脚本完成之前不会显示表单,这无济于事。
我尝试根据情况使用break或return来处理脚本的流程,这次我在正确的时间显示了表单,但是脚本的预期执行结束了,在发送表单后它变成执行所有代码从头开始,重新启动变量。
无论如何,我希望我已经正确解释,以便有人可以给我更好的建议,因为我真的很迷茫。