簡體   English   中英

在電報 tdlib 中實現全局搜索聊天

[英]Implementation of a global search for chats in telegram tdlib

我正在嘗試復制電報中的全局聊天搜索。

在此處輸入圖像描述

我正在使用getChats方法進行搜索,但問題是該方法只返回一個 id 列表。

除了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;

我認為您面臨的問題是由於 API。 您應該嘗試使用不同的 API。 如果您檢查這兩個文檔:

  1. 搜索公共聊天
  2. 搜索公共聊天

您使用的 API 僅返回 chatIds,但 searchPublicChat 將包含搜索到的聊天的所有信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM