🤖

【初心者必見】Pythonを使ってオウム返しLINEbotを作ろう!!

2024/04/25に公開

はじめに

突撃突撃......。。。
おっとすいません。まさかこんなところに人が通りかかるとは、、、
ただの独り言ですよ。気にしないでください笑

さて、今回はPythonを使ったLINEbotの作り方を紹介します!⭐
プログラミングを始めたばかりの初心者さんも簡単に作れますので、
全体のイメージでも少しは掴めるかなと思います(*'▽')

文字が多くてややこしいですが、挫けずにがんばりましょう!!
(僕もプログラミングを初めて3日で作れました)

大まかな流れ

  • |LINE Developersに登録しよう!
  • |ngrokをダウンロードしよう!
  • |Pythonにコードを書こう!【コピペで可】
  • |いざサーバー起動!!

1 LINE Developersに登録しよう!

おや?LINEbotを制作するにあたって、
LINE Developers(開発者向けサイト)の登録が必要みたいですね?
↑↑↑を押して、ちゃちゃっと登録しちゃいましょう✨


その1 LINEを使ってログインしよう!

ページに飛んだらこのような画面が出てくると思います。
右上のコンソールにログインを押してログインしましょう!!


続いてログイン方法です👀
色々選択できると思うので、自分のLINEアカウントなどでログインしてください(^^♪

その2 アカウントを作成しよう!

次に下の画像のように、開発者名メールアドレスを入力する欄が出てきます!
好きな名前を付けましょう!

その3 LINEbotの"核"を作ろう!

続いて、実際にLINEでオウム返しをするbotの核を作っていきます🦜
下の画像の新規プロバイダー作成をクリック!


次にプロバイダー名と書かれた欄があるので、わかりやすい名前にして作成!!


続けて、赤い線で囲ってあるMessaging APIをクリック!


最後にチャネル作成していきます!(botのアイコン、名前など)

地域、チャネル名、チャネル説明などいろいろありますが
よくわからない方はなんとなくで全然大丈夫です!〇

作成できればひとまず、ここでの作業は終わりです!(オツカレサマデシタ!!)

2 ngrokをダウンロードしよう!

次にngrokをダウンロードしていきます。
ngrokは、外部からローカルサーバーにアクセスできるようにするものです(すごい✨)
ngrok公式サイト
↑↑↑をクリック‼

そしたら下のような画面が出てくると思うのでお好きなログイン方法でログイン!!


続いてDownload for Windows(64-bit) を押してダウンロード!(自分が使ってるOSに合わせてください)

これでngrokの下準備は完了です〇

3 Pythonにコードを書こう!【コピペで可】

さて、先程はbotの核を作りましたがこのままでは動かないようですね。。。
botを動かすためにはbotの脳みそを作る必要があります!

これからbotの脳みそを作っていきます!(コピペで〇)



LINEbotという名前のフォルダに(名前はなんでもOK)

そのフォルダの中に2個ファイルを作ります!
一つ目が、「config.py」
二つ目は、「app.py」

この2つをフォルダ内に作ります!
下のようになればOK



続いて必要なライブラリをダウンロードします!

ターミナルを開き、以下のコマンドをいれます。

pip install line-bot-sdk
pip install Flask

こんな感じにいっぱい文字が出てきたらOK!!

config.py

続いてconfig.pyに、こちらを書き込んでいきます

LINE_CHANNEL_SECRET = " "   
LINE_CHANNEL_ACCESS_TOKEN = " "

ここの" " で囲われた部分にLINE Developers から取得できるチャネルシークレットチャネルアクセストークンを書き込んでいきます

チャネルシークレットは"チャネル基本設定"の下の方にあります!
悪用される可能性があるので、人には見せないでください

続いてチャネルアクセストークンですね。
"Messaging API設定"の下の方にあります!
(発行されてない人は発行ボタンを押して下さい⭐)

そしたら" "の中に張り付けていきます!
下の画像のようになればOK

app.py

config.pyが出来たところで、
app.pyの方も作っていきます🌟

↓ の内容をapp.pyに貼り付けます

import config 
from flask import Flask, request, abort

from linebot import (
    LineBotApi, WebhookHandler
)
from linebot.exceptions import (
    InvalidSignatureError
)
from linebot.models import (
    MessageEvent, TextMessage, TextSendMessage,
)

app = Flask(__name__)

line_bot_api = LineBotApi(config.LINE_CHANNEL_ACCESS_TOKEN)    
handler = WebhookHandler(config.LINE_CHANNEL_SECRET)    


@app.route("/callback", methods=['POST'])
def callback():
    # get X-Line-Signature header value
    signature = request.headers['X-Line-Signature']

    # get request body as text
    body = request.get_data(as_text=True)
    app.logger.info("Request body: " + body)

    # handle webhook body
    try:
        handler.handle(body, signature)
    except InvalidSignatureError:
        print("Invalid signature. Please check your channel access token/channel secret.")
        abort(400)

    return 'OK'


@handler.add(MessageEvent, message=TextMessage)
def handle_message(event):
    if event.reply_token == "00000000000000000000000000000000":
        return

    line_bot_api.reply_message(
        event.reply_token,
        TextSendMessage(text=event.message.text)
    )

if __name__ == "__main__":
    app.run(host="localhost", port=8000)

画像のようになればOK!

このコードは44行目で

        event.reply_token,
        TextSendMessage(text=event.message.text)
    )

テキストメッセージを受信した場合に同じメッセージを返信する(オウム部分🦜)
というコードです!

そのままでオウム返しをしてくれるのですが、メッセージを変えたい場合は

TextSendMessage(text=event.message.text) の部分を変えていきます。

例えば
受信したメッセージに「こんにちは!」と付け加えて返信したい場合は

TextSendMessage(text=event.message.text + "こんにちは")

という感じで色々応用とかもできます!
(inport randomとか使ってもおもしろそう)

4 いざサーバー起動!!

  • その1

app.pyをwindowsのターミナルを使って実行していきます。
※親ディレクトリで実行しないと実行できないので注意!

python app.py


こんな感じになればOK
赤い文字は気にしなくてOK


続いて先程ダウンロードしたngrokを解凍して実行すると、
新しいターミナルが出てくると思います。

そこに

ngrok http 8000

を入れていきます!
すると、、、

こんな画面に!!
サーバーがこれで立ちました!



サーバーは立ちましたが
まだbotの脳みそが繋がっていないので繋げる作業に入ります。
大丈夫です。一瞬で終わります。
ngrokターミナルのForwarding の右のリンクをコピー!

↓の白いところ


最後にコピーしたリンクをLINE DevelopersWebhook設定Webhook URLにペースト!!

※ペースト出来たらURLの後ろに /callback を追加してください!※

成功とでたらOK!!


それでは実際に友達追加してオウム返しができているか確認しましょう!!



無事できてますね!!
お疲れさまでした!!!

おわりに

ここまで見てくださりありがとうございました!
LINE botの作成どうだったでしょうか。

僕自身、初めての記事作成でしたが、なかなか難しいんですね('◇')ゞ
記事を書いている人のすごさをとても実感しました。。。

宣伝させてください!!
3日でLINEBotを作れるようになったのはこのコミュニティがあったからと言っても過言ではありません!
実績だらけのすごプログラマーたちに教えてもらえます!
無料で質問し放題なのでおススメですよ('ω')

プログラミングを始めるきっかけに少しでもなればと思います。

https://discord.gg/CnHVs6NJ

Discussion