За что отвечает параметр offset в функции get_inline_bot_results?

Рейтинг: 0Ответов: 1Опубликовано: 02.08.2023

Я решил написать своё пользовательское приложение для работы с телеграм-ботом (murglar_bot), который позволяет доставать музыкальный трек из разных сервисов просто по запросу (названию исполнителя и названию песни).

Привожу скриншот как это работает с точки зрения пользователя.

введите сюда описание изображения

введите сюда описание изображения

А теперь что я пытаюсь сделать в коде, чтобы повторить результат, но программно:

from pyrogram import Client, filters
import time


app = Client(
    "my_account",
    api_id=api_id, api_hash=api_hash,
)


async def main():
    async with app:
        bot_results = await app.get_inline_bot_results(
            "murglar_bot",
            query="@murglar_bot Индульгенция Против меня",
            offset="???"
        )

        for res in bot_results.results:
            print(res.id + " : " + res.title)


app.run(main())

Вывод приложения сильно отличается от вывода в клиенте телеграма:

sz_49146474_mp3_320 : Егор Крид, MOLLY - Если ты меня не любишь (E.M.O.…

sz_47459295_mp3_320 : Егор Крид, MOLLY - Если ты меня не любишь (Если…

sz_69372333_mp3_320 : MORGENSHTERN - Если я спал с тобой (ДО ТОГО КАК СТАЛ ИЗВЕСТЕН)

sz_44623524_mp3_320 : Дискотека Авария, Мумий Тролль - Дельфины (Дискотека…

sz_44623531_mp3_320 : Дискотека Авария, Мумий Тролль - Девочка (Дискотека…

Как можно заметить некоторые песни совпадают, некоторые отсутствуют. Да и количество результирующих элементов после запуска кода значительно меньше. Моё предположение заключается в том, что выдаются не все результаты и нужно делать повторный запрос, но с неким "сдвигом". За который возможно отвечает параметр offset в функции get_inline_bot_results.

Вопрос: так ли это? За что этот параметр в действительности отвечает? Какие значения он принимает? Лично я перепробовал все целые числа: на вывод это никак не повлияло.

Ответы

▲ 0Принят

Проблема оказалась в этой строчке кода:

    bot_results = await app.get_inline_bot_results(
        "murglar_bot",
        query="@murglar_bot Индульгенция Против меня"
    )

Я пытался имитировать действия пользователя, т.е. ручками написать в запросе (параметр query) @murglar_bot Индульгенция Против меня - а нужно было просто передавать сразу сам запрос без прямого обращения к боту, т.е. вот так:

    bot_results = await app.get_inline_bot_results(
        "murglar_bot",
        query="Индульгенция Против меня"
    )

И никакой offset не нужен здесь:)