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

时间:2020-02-15 21:00:54

标签: telegram-bot python-telegram-bot

我正在制作一个有趣的Telegram机器人(@zeroxisbot),但遇到了一个问题。我有一个内联命令“ wacky”,该命令会更改您输入的文本,并且以大写或小写字母开头时会有所不同。所以,这就是我期望它起作用的方式:

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

这是可行的,但是如果我一个接一个地测试这两个,第二个将返回与第一个相同的东西。

我认为正在发生的事情是Telegram正在缓存此查询并直接返回它而不与我的机器人对话。但是,当加载该缓存时,它不会测试是否区分大小写,因此,即使它不同(以大写字母开头),它也会返回旧的小写字母。几分钟后,我可以再次对其进行测试,并且似乎已重置,因为缓存已被清除。

那么,有什么方法可以使缓存区分大小写?如果没有,有什么办法可以禁用该缓存,使其始终直接进入我的机器人?

我正在使用python-telegram-bot。

1 个答案:

答案 0 :(得分:1)

您正在寻找电报的cache_time参数。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),而不是为收到的每个查询创建一个查询(我的示例就是这样做)。