【お遊び用】湯婆婆をLINE Bot にしてみる(Python)
はじめに
@NemesisさんのJavaで湯婆婆を実装してみるを見て、自分の名前を入れて湯婆婆に遊ばれてみたいと思った方もいるでは??と思いBot化しました。
以下のQRコードからBotの友達追加が可能です。
ぜひ、遊んでみてください。
エンジニア界隈でこんなこと流行ってるよって、世間にも知らせたいのでぜひLGMTをよろしくお願いします。
実装について
言語はPythonを使用しました。
「"契約書だよ。そこに名前を書きな。"」を発動するにはユーザーからのリクエストが必要なのは少し困りましたが、めんどくさいので「働かせて」くらいの言葉を言えば反応するようにしました。
基本的には、文字削りのところのみ遊んでみてください。
コード
from flask import Flask, request, abort
import random
from linebot import (
LineBotApi, WebhookHandler
)
from linebot.exceptions import (
InvalidSignatureError
)
from linebot.models import (
MessageEvent, TextMessage, TextSendMessage)
import os
app = Flask(__name__)
YOUR_CHANNEL_ACCESS_TOKEN = 'XXXXXXXXXXX'
YOUR_CHANNEL_SECRET = 'XXXXXXXXXXX'
line_bot_api = LineBotApi(YOUR_CHANNEL_ACCESS_TOKEN)
handler = WebhookHandler(YOUR_CHANNEL_SECRET)
@app.route("/callback", methods=['POST'])
def callback():
signature = request.headers['X-Line-Signature']
body = request.get_data(as_text=True)
app.logger.info("Request body: " + body)
try:
handler.handle(body, signature)
except InvalidSignatureError:
abort(400)
return 'OK'
@handler.add(MessageEvent, message=TextMessage)
def handle_message(event):
word = event.message.text
if '働かせて' in word:
reply_word = "契約書だよ。そこに名前を書きな。"
else:
newName = random.choice(word)
reply_word = f"フン。{word}というのかい。贅沢な名だねぇ。 今からお前の名前は{newName}だ。いいかい、{newName}だよ。分かったら返事をするんだ、{newName}!!"
line_bot_api.reply_message(
event.reply_token,
TextSendMessage(text=reply_word))
if __name__ == "__main__":
port = int(os.getenv("PORT", 5000))
app.run(host="0.0.0.0", port=port)
実行結果
良い感じに切り出してくれてますね。
感想
空文字が送ることができないが故にお決まりのエラーが吐けないのは勘弁してください。
なぜ一文字切り出しが流行っているのか謎。
ランダムで文字数も切り出したい。
LINE botは便利すぎるので、もっと機能知りたい。
Author And Source
この問題について(【お遊び用】湯婆婆をLINE Bot にしてみる(Python)), 我々は、より多くの情報をここで見つけました https://qiita.com/bayashimon/items/959e03e2fc20148f714d著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .