如何仅记录选择的内联结果文章 - Python Telegram Bot

时间:2017-09-19 13:35:14

标签: python python-3.x logging telegram-bot python-telegram-bot

我编写了一个简单的脚本,允许人们使用我的内联机器人编写大写文本。

def inline_caps(bot, update): nick=update.inline_query.from_user.username query = update.inline_query.query try: if not query: return results = list() results.append(InlineQueryResultArticle(id=query.upper(),title="Formatta in maiuscolo", input_message_content=InputTextMessageContent(query.upper()))) bot.answerInlineQuery(update.inline_query.id, results) log.a((nick)+" ha formattato un testo") except Exception as err: log.e(err)

我使用朋友制作的记录器记录所有内容,您可以找到它here。 问题是它记录了所有内容,即使用户只选择写“@name_bot t”而不选择上限。如何仅记录所选结果?

如果您需要,请点击以下链接:

from telegram.ext import Updater, Filters, CommandHandler, MessageHandler, InlineQueryHandler, ChosenInlineResultHandler from telegram import Chat, ParseMode, InlineQueryResultArticle, InputTextMessageContent import os, math, time, re, random from time import strftime from pprint import pprint import Logger as log from uuid import uuid4

以下是我的调度员:

    dp = updater.dispatcher
# Comandi vari:
dp.add_handler(CommandHandler("start", start))
dp.add_handler(CommandHandler("help", help))
dp.add_handler(CommandHandler("id", id))
dp.add_handler(CommandHandler("groupid", groupid))
# Quindi: dp.add_handler(CommandHandler("comando", funzione))
dp.add_handler(CommandHandler("info", info))
# Filtri vari
dp.add_handler(MessageHandler(Filters.text, reader))
dp.add_handler(MessageHandler(Filters.audio, ext_audio))
dp.add_handler(MessageHandler(Filters.photo, ext_photo))
# Funzionalità inline
inline_caps_handler = InlineQueryHandler(inline_caps)
result_handler = ChosenInlineResultHandler(say_hello)
dp.add_handler(inline_caps_handler)
dp.add_handler(result_handler)

我该怎么办?

2 个答案:

答案 0 :(得分:0)

您可以启用inline feedback,并忽略所有inline_query,在chosen_inline_result中获取查询。

答案 1 :(得分:0)

如果您只想记录所选结果,当然您必须在result_handler = ChosenInlineResultHandler(say_hello)的回调函数中执行此操作,这是您的say_hello函数。

您应该可以使用update.chosen_inline_result进行记录。