我正在制作一个有趣的Telegram机器人(@zeroxisbot),但遇到了一个问题。我有一个内联命令“ wacky”,该命令会更改您输入的文本,并且以大写或小写字母开头时会有所不同。所以,这就是我期望它起作用的方式:
@zeroxisbot test -> tEst
@zeroxisbot Test -> TeSt
这是可行的,但是如果我一个接一个地测试这两个,第二个将返回与第一个相同的东西。
我认为正在发生的事情是Telegram正在缓存此查询并直接返回它而不与我的机器人对话。但是,当加载该缓存时,它不会测试是否区分大小写,因此,即使它不同(以大写字母开头),它也会返回旧的小写字母。几分钟后,我可以再次对其进行测试,并且似乎已重置,因为缓存已被清除。
那么,有什么方法可以使缓存区分大小写?如果没有,有什么办法可以禁用该缓存,使其始终直接进入我的机器人?
我正在使用python-telegram-bot。
答案 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)
,而不是为收到的每个查询创建一个查询(我的示例就是这样做)。