Для чего используется метод SearchGlobal?

Как настроить смещение при использовании метода поиска сообщений в телеграмме с помощью gramm.js?

У меня возникла проблема с использованием метода поиска сообщений в телеграмме при помощи gramm.js. Я использую пример кода из документации, выбрал случайного пользователя, ввел фразу и получил массив сообщений при первом запросе. Однако, при последующих запросах я получаю те же самые сообщения, и мне не удается сместиться к новым сообщениям.

Согласно документации, я понял, что должен установить значение свойства offsetRate в result.nextRate (полученное значение из предыдущего запроса). Я установил это значение, но ничего не изменилось. Я также попытался перебирать значения от 0 и далее, но результат остался одним и тем же. Даже когда я устанавливаю лимит в 100 сообщений, я получаю те же самые 100 сообщений каждый раз.

Мой код выглядит следующим образом:

let nextRate = 0;

const result  = await limiterTwo.schedule(() =>client.invoke(
    new Api.messages.SearchGlobal({
    q: "нужен репетитор",
    filter: new Api.InputMessagesFilterEmpty(),
    minDate: Math.floor((Date.now() - (30 * 24 * 60 * 60 * 1000)) / 1000),
    maxDate: Math.floor(Date.now() / 1000),
    offsetRate: nextRate,
    offsetPeer: userName,
    offsetId: 0,
    limit: 1,
})))

Как я могу настроить смещение, чтобы получить новые сообщения при каждом запросе?
  • 5 ноября 2023 г. 8:28
Ответы на вопрос 1
Метод SearchGlobal используется для выполнения глобального поиска сообщений в Telegram. Он позволяет находить сообщения по определенным параметрам, таким как текст, даты отправки и т. д.

Чтобы настроить смещение при использовании метода поиска сообщений, вы должны установить значение свойства offsetRate в поле nextRate, которое вы получили из предыдущего запроса. Однако, в вашем коде вы устанавливаете значение nextRate равным нулю каждый раз перед выполнением запроса.

Вы должны сохранить значение nextRate после каждого запроса, чтобы использовать его в следующем запросе. В вашем случае вы можете сохранить это значение в переменной и использовать его в коде:

```javascript
let nextRate = 0;

// Выполнение запроса
const result = await limiterTwo.schedule(() => client.invoke(
    new Api.messages.SearchGlobal({
        q: "нужен репетитор",
        filter: new Api.InputMessagesFilterEmpty(),
        minDate: Math.floor((Date.now() - (30 * 24 * 60 * 60 * 1000)) / 1000),
        maxDate: Math.floor(Date.now() / 1000),
        offsetRate: nextRate,
        offsetPeer: userName,
        offsetId: 0,
        limit: 1,
    })
));

// Получение следующего значения nextRate из результата
nextRate = result.nextRate;

// Использование полученного значения nextRate в следующем запросе
const nextResult = await limiterTwo.schedule(() => client.invoke(
    new Api.messages.SearchGlobal({
        q: "нужен репетитор",
        filter: new Api.InputMessagesFilterEmpty(),
        minDate: Math.floor((Date.now() - (30 * 24 * 60 * 60 * 1000)) / 1000),
        maxDate: Math.floor(Date.now() / 1000),
        offsetRate: nextRate,
        offsetPeer: userName,
        offsetId: 0,
        limit: 1,
    })
));
```

При каждом последующем запросе вы должны использовать сохраненное значение nextRate, чтобы получить новые сообщения. Это позволит вам смещаться к новым сообщениям при каждом запросе.
Похожие вопросы