如何让Telegram机器人的内联缓存区分大小写?

问题描述 投票:1回答:1

我正在做一个Telegram机器人来玩(@zeroxisbot),我遇到了一个问题。我有一个内联命令 "wacky",它可以改变你输入的文本,并且如果文本是以大写或小写字母开头,它就会有不同的表现。所以,我希望它是如何工作的。

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

它的工作原理是这样的, 但如果我一个接一个地测试这两个, 第二个和第一个返回的结果是一样的.

我认为发生的情况是,Telegram正在缓存这个查询并直接返回它,而不与我的机器人对话。但是当它加载那个缓存时,它并没有测试大小写的敏感性,所以即使它是不同的(以大写开始),它也会返回旧的小写。过了几分钟,我可以再次测试它,它似乎确实重置了,因为缓存正在被清除。

那么,有什么方法可以让缓存区分大小写吗?如果没有,有什么办法可以让缓存失效,让它总是直接进入我的机器人?

顺便说一下,我使用的是 python-telegram-bot。

telegram-bot python-telegram-bot
1个回答
1
投票

你要找的是 cache_time 的参数。

cache_time (, 可选)-内联查询结果在服务器上缓存的最大时间,以秒为单位。默认值为300。

例子:现在答案将被缓存30秒。

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,你应该在服务器上设置一个 "cache_time"。update.inline_query.answer(results,cache_time=seconds) 而不是每接受一个查询就用一个(我的例子是后者)。

© www.soinside.com 2019 - 2024. All rights reserved.