web-dev-qa-db-ja.com

Python Telegram Botは、メッセージに応答するボットを取得します

現在、python-telegram-botライブラリを使用して電報ボットを作成しています。私の問題は、インラインコマンドを使用するときにボットに応答を返させようとしていることです。したがって、ユーザーがボット@botname 'text'を送信するとき、'text'stringとして保存し、ボットにその変数を使用して何かを送信させる必要があります。

何らかの理由で、これを機能させることができません。以下のコードを試してみましたが、うまくいきません... githubの例も投稿しました。

私のコード

def inlinequery(update, context):

"""Handle the inline query."""
 query = update.inline_query.query
 text = query.message_text
 print(text)
 update.message.reply_text(text)

コード例

#Sends message when @botname is used
def inlinequery(update, context):

"""Handle the inline query."""
query = update.inline_query.query
results = [
    InlineQueryResultArticle(
        id=uuid4(),
        title="Caps",
        input_message_content=InputTextMessageContent(
            query.upper())),
    InlineQueryResultArticle(
        id=uuid4(),
        title="Bold",
        input_message_content=InputTextMessageContent(
            "*{}*".format(escape_markdown(query)),
            parse_mode=ParseMode.MARKDOWN)),
    InlineQueryResultArticle(
        id=uuid4(),
        title="Italic",
        input_message_content=InputTextMessageContent(
            "_{}_".format(escape_markdown(query)),
            parse_mode=ParseMode.MARKDOWN))]

update.inline_query.answer(results)


def main():
    # Get the dispatcher to register handlers
dp = updater.dispatcher
dp.add_handler(InlineQueryHandler(inlinequery))

# Start the Bot
updater.start_polling()

if __name__ == '__main__':
main()
2
nyjets30

インラインクエリのUserオブジェクトを使用して、メッセージを送信できます。ボットがメッセージを送信する前に、ユーザーはボットとのプライベートチャットを開始する必要があることに注意してください。

私はあなたの試みを修正しました。動作するはずですが、テストしていません。

def inlinequery(update, context):
    """Handle the inline query."""
    query = update.inline_query
    text = query.query
    print(text)
    query.from_user.send_message(text)

関連ドキュメント:

1
jh0ker