Как сделать, чтобы встроенный кэш Telegram был чувствителен к регистру? - PullRequest
1 голос
/ 16 февраля 2020

Я делаю бот Telegram для развлечения (@zeroxisbot), и я столкнулся с проблемой. У меня есть встроенная команда «wacky», которая изменяет текст, который вы вводите, и делает это по-другому, если она начинается с заглавной или строчной буквы. Итак, вот как я ожидаю, что это будет работать:

@zeroxisbot test -> tEst
@zeroxisbot Test -> TeSt

Это вроде работает, но если я проверяю эти два один за другим, второй возвращает то же самое, что и первый.

Мне кажется, что Telegram кеширует этот запрос и возвращает его напрямую, не разговаривая с моим ботом. Но когда он загружает этот кеш, он не проверяет чувствительность к регистру, и поэтому, даже если он отличается (начинается с заглавных букв), он возвращает старую строчную. Через несколько минут я могу проверить его снова, и он, кажется, сбрасывается, потому что кэш очищается.

Итак, есть ли способ сделать кэш чувствительным к регистру? И если нет, то есть ли способ отключить этот кеш, чтобы он всегда передавался непосредственно моему боту?

Кстати, я использую python -telegram-bot.

1 Ответ

0 голосов
/ 25 апреля 2020

Вы ищете параметр cache_time для telegram.InlineQuery.answer

cache_time ( int , необязательно ) - максимальное количество времени в секундах, в течение которого результат встроенного запроса может кэшироваться на сервере. По умолчанию 300.

Пример:

def inlinequery(update, context):
    query = update.inline_query.query
    results = [
        InlineQueryResultArticle(
            id=uuid4(),
            title="time",
            input_message_content=InputTextMessageContent(
                "time: {!s}".format(time.asctime(time.localtime()))))
        ]
    seconds = 30;
    update.inline_query.answer(results,cache_time=seconds)

Теперь ответ будет кэшироваться в течение 30 секунд.

Если вы хотите использовать разные значения cache_time для разных запросов, вы должен сделать update.inline_query.answer(results,cache_time=seconds) для каждого запроса, который вы принимаете, и не один для каждого запроса, который вы получаете (мой пример делает последнее).

...