現在、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()
インラインクエリのUser
オブジェクトを使用して、メッセージを送信できます。ボットがメッセージを送信する前に、ユーザーはボットとのプライベートチャットを開始する必要があることに注意してください。
私はあなたの試みを修正しました。動作するはずですが、テストしていません。
def inlinequery(update, context):
"""Handle the inline query."""
query = update.inline_query
text = query.query
print(text)
query.from_user.send_message(text)
関連ドキュメント: