我正在做一个Telegram机器人来玩(@zeroxisbot),我遇到了一个问题。我有一个内联命令 "wacky",它可以改变你输入的文本,并且如果文本是以大写或小写字母开头,它就会有不同的表现。所以,我希望它是如何工作的。
@zeroxisbot test -> tEst
@zeroxisbot Test -> TeSt
它的工作原理是这样的, 但如果我一个接一个地测试这两个, 第二个和第一个返回的结果是一样的.
我认为发生的情况是,Telegram正在缓存这个查询并直接返回它,而不与我的机器人对话。但是当它加载那个缓存时,它并没有测试大小写的敏感性,所以即使它是不同的(以大写开始),它也会返回旧的小写。过了几分钟,我可以再次测试它,它似乎确实重置了,因为缓存正在被清除。
那么,有什么方法可以让缓存区分大小写吗?如果没有,有什么办法可以让缓存失效,让它总是直接进入我的机器人?
顺便说一下,我使用的是 python-telegram-bot。
你要找的是 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)
而不是每接受一个查询就用一个(我的例子是后者)。