2017-09-19 11 views
1

私はインラインボットでキャップテキストを書くことができる簡単なスクリプトを書いています。ログの記録方法選択したインライン結果の記事 - 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) 

私は何をすべき?

答えて

0

inline feedbackを有効にして、すべてを無効にすることができます。inline_querychosen_inline_resultのクエリを取得します。

+0

しかし、選択したインライン結果のみをログに記録します。私はすでにインラインフィードバックを有効にしており、 'inline_query'をすべて無視することで何を意味するのか分かりません。 –

+0

'inline_query'をログに記録せず、' update.chosen_inline_result.query'のログのみ – Sean

+0

どうすればいいですか?すべての 'update.inline_query.query'に" selected_ "と書かなければなりませんか? –

0

選択した結果のみをログに記録する場合は、say_helloというコールバック関数result_handler = ChosenInlineResultHandler(say_hello)で行う必要があります。

update.chosen_inline_resultでログに記録できるはずです。

関連する問題