3
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【お遊び用】湯婆婆をLINE Bot にしてみる(Python)

Last updated at Posted at 2020-11-11

はじめに

@NemesisさんのJavaで湯婆婆を実装してみるを見て、自分の名前を入れて湯婆婆に遊ばれてみたいと思った方もいるでは??と思いBot化しました。
以下のQRコードからBotの友達追加が可能です。
ぜひ、遊んでみてください。

エンジニア界隈でこんなこと流行ってるよって、世間にも知らせたいのでぜひLGMTをよろしくお願いします。

Screen Shot 2020-11-11 at 22.17.43.png

## 実装について

言語はPythonを使用しました。
"契約書だよ。そこに名前を書きな。"」を発動するにはユーザーからのリクエストが必要なのは少し困りましたが、めんどくさいので「働かせて」くらいの言葉を言えば反応するようにしました。

基本的には、文字削りのところのみ遊んでみてください。

コード

main.py
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)

実行結果

良い感じに切り出してくれてますね。

Screen Shot 2020-11-11 at 22.34.10.png

感想

空文字が送ることができないが故にお決まりのエラーが吐けないのは勘弁してください。

なぜ一文字切り出しが流行っているのか謎。
ランダムで文字数も切り出したい。

LINE botは便利すぎるので、もっと機能知りたい。

以上。
Screen Shot 2020-11-11 at 22.17.43.png

3
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?