我试图复制全球聊天搜索,就像电报一样。

我使用getChats方法进行搜索,但问题是该方法只返回一个is列表。
除了id之外,我还想得到聊天的名字和化身。

因此,我必须遍历forEach中的chatids,对于每个id调用,返回我需要的数据的getChat方法。这反过来会导致查询执行时间方面的严重问题。(14秒)。在一封电报中,搜索需要2秒。我不知道他们是怎么做到的,我重读了所有的文档,找不到一种方法可以让我传递聊天的名字,除了标识符之外,还有一个标题和一个图像。有没有人遇到过类似的问题?
import BaseAction from "./BaseAction";
import airgram from "../airgram/airgram";
import { ChatsUnion, ChatUnion } from 'airgram';
class SearchChatsAction implements BaseAction
{
async run(name: string): Promise<any>
{
const output = await airgram.api.searchPublicChats({
query: name
});
const promises: Array<any> = [];
const result: Array<any> = [];
for (const chatId of (output.response as ChatsUnion).chatIds)
{
promises.push(
airgram.api.getChat({
chatId: chatId
}).then(output => {
result.push({
id: (output.response as ChatUnion).id,
title: (output.response as ChatUnion).title
});
})
);
}
await Promise.all(promises);
return result;
}
}
export default SearchChatsAction;发布于 2022-06-16 11:22:41
我认为您所面临的问题是因为API。您应该尝试使用不同的API。如果您检查这两个文档:
您使用的API只返回chatIds,但是searchPublicChat将包含所有搜索到的聊天信息。
https://stackoverflow.com/questions/72607236
复制相似问题