LoginSignup
17
22

More than 3 years have passed since last update.

【完全無料】LINEチャットbotをサクッと作ろう

Last updated at Posted at 2021-04-09
  • なんだか難しそう,,
  • botの意味もよく分からない,,
  • 途中で有料になりそうで不安だな,,



私も最初はそう思っていましたが、やってみると全無料で、サクッと作成できました。
最後まで読んでいただくとメッセージ自動送信bot、が作成できます。


〜目次〜
1. LINEMessagingAPI
2. Lineの操作
  2-1. モジュールのインストール
  2-2. jsonファイルの作成
  2-3. jsonの読み込み
  2-4. 送信モジュールのインポート
  2-5. 使用するチャンネルの指定
  2-6. テキストの作成
  2-7. LINEメッセージの送信
3. GitHubの登録とファイルのpush
  3-1. GitHubの登録
  3-2. Repositoryと作業ディレクトリの紐付け
4. GitHubActionsで送信の自動化
  4-1. pythonファイルの作成
  4-2. main.pyのpush
  4-3. GitHubActionsの設定
  4-4. 自動送信のタイミング指定
5. 終わりに

1. LINEMessagingAPI

LINEMessagingAPIからログイン
ログインアカウントは自分の個人アカウント。ビジネスアカウントがある方はどちらを使用していただいても構いません。



ダッシュボード画面が表示されたら、Provider(誰が提供するか)を作成
nameは自由に決めて下さい。

スクリーンショット_2021-04-09_10_09_25.png



モバイル画像のLINE Messaging API選択がある方はそちらを選択して下さい。
ikon画像(誰から届くか)の選択
Channel nameはメッセージを送ってくる人の名前や企業名など

スクリーンショット_2021-04-09_10_39_53.png



description(今から作成する自動メッセージbotの説明)
記入は必要ですが、詳しく書く必要はありません。
Categoryは当てはまる項目を選択しましょう。

スクリーンショット_2021-04-09_10_48_03.png



2つのチェックボックスにチェックを入れたら、createを押して作成を完了します。

スクリーンショット_2021-04-09_10_54_12.png



MessagingAPIのタブを選択するとIDとQRコードが出来上がっているはずです。
どちらかを使って友達登録をしていきます。
LINEにデフォルトメッセージが送信されていることも確認しておきましょう。

スクリーンショット_2021-04-09_11_01_57.png



そのまま下の方にスクロールしていくと、Channel access tokenの項目があるので、ISSUEを押して、トークンを発行しておきましょう。

スクリーンショット_2021-04-09_12_02_37.png



次にBasic settingsのタブに移動して、一番下にYour user IDが記載されていることも確認しておきましょう。
スクリーンショット_2021-04-09_11_10_18.png

スクリーンショット_2021-04-09_12_06_08.png

登録が完了したらbot作成準備は終わりです。
次は、コードを書いていきます。


2. LINEの操作

2-1. モジュールのインストール

# LINE操作に必要なline-bot-sdkをインストール
!pip install line-bot-sdk


2-2. jsonファイルの作成

# jsonでのクォーテーションは"ダブル"を使用
{
"CHANNEL_ACCESS_TOKEN":"取得したアクセストークン"
"USER_ID":"取得したYour user ID"
}

ここで注意しなければならないのが、改行です。
トークンがかなり長いですので、勝手に改行されてしまいエラーになる場合があります。
ですので、改行は元に戻しておいて下さい。
戻したらjsonファイルは保存しておきます。


2-3. jsonの読み込み

import json

# `r`はread読み込みのrです。
file = open('info.json','r')
info = json.load(file)

infoでjsonファイルを出力してファイルを読み込めているか確認してみましょう。

出力結果
{'CHANNEL_ACCESS_TOKEN': 'EVRKXIelyjNBT---------=',
'USER_ID': 'U------'}


2-4. 送信モジュールのインポート

from linebot import LineBotApi
from linebot.models import TextSendMessage

LINEにテキストを送る為のものです。


2-5. 使用するチャンネルの指定

CHANNEL_ACCESS_TOKEN = info["CHANNEL_ACCESS_TOKEN"]

line_bot_api = LineBotApi(CHANNEL_ACCESS_TOKEN)

一行目で作成した関数を使用して、LineBotApiで読み込みます。
チャンネルを使用する宣言だと思って下さい。


2-6. テキストの作成

import random

rdm = ['aaa','bbb','ccc']

# choiceでランダムにリスト内のテキストを表示
val = random.choice(rdm)
val

毎日自動で送られてくるメッセージをランダムにします。
aaa,bbb,cccは後で、好きな名言やメッセージを自由に変更できます。
ですので今回は、動くコードの作成を優先して進めていきます。

出力結果
bbb


2-7. LINEメッセージの送信

def main():
    USER_ID = info["USER_ID"]

# どんなテキストを送るか
    messages=TextSendMessage(val)

# 誰に送るか
    line_bot_api.push_message(USER_ID,messages)

if __name__ == "__main__":
    main()

これを実行すると、LINEメッセージが届きます。


3. GitHubの登録とファイルのpush

3-1. GitHubの登録

Repositoriesを作成します。
NEWを押してRepository nameを自由に決めて下さい。
public(公開)かprivate(非公開)を選択できるのですが今回はprivateを選択します。
選択が終わればcreating Repositoryを押して完了

スクリーンショット_2021-04-09_12_21_57.png



ページを戻ると、アカウントの横にRepositoryが確認できるかと思います。
そのページの一段目のHTTPSをコピーして下さい。

スクリーンショット_2021-04-09_12_26_48.png


3-2. Repositoryと作業ディレクトリの紐付け

jupyterに戻ってターミナルから紐付けていきます。

# jupyterターミナルに記述
git init

git initの出力結果
Reinitialized existing Git repository in /Users/name/.git/

git remote add origin コピーしたURL

add originの出力結果
origin コピーしたURL(fetch)
origin コピーしたURL(push)

# .(ドット)で全てをaddする
git add .

# 変更履歴の保存
git commit -m'1st commit'

commitの出力結果
master(root-commit)798asf9] 1st commit
5 file changeed, 468 insertions(+)
create mode 100644 json
create mode 100644 checkpoint
create mode 100644 info.json
create mode 100644 jpg
create mode 100644 ------.ipynb

5つのファイルを作成し、ローカル上での変更はできました。
次は変更した内容をGit上に送信します。

# Gitに作成したファイルをpush
git push origin master

ズラーっと読み込みが始まります。
GitHubのマイページを見ると作成や設定したファイルが追加されています。


4. GitHubActionsで送信の自動化

4-1. pythonファイルの作成

import json
from linebot import LineBotApi
from linebot.models import TextSendMessage

file = open('info.json','r')
info = json.load(file)

import random

rdm = ['aaa','bbb','ccc']
val = random.choice(rdm)
val

CHANNEL_ACCESS_TOKEN = info["CHANNEL_ACCESS_TOKEN"]
line_bot_api = LineBotApi(CHANNEL_ACCESS_TOKEN)

def main():
    USER_ID = info["USER_ID"]
    messages=TextSendMessage(text="val")
    line_bot_api.push_message(USER_ID,messages)

if __name__ == "__main__":
    main()

jupyterでテキストファイルを追加して、名前をmain.pyに変更します。
実行に必要なコードだけを、ここコピペしておきます。


4-2. main.pyのpush

# ターミナル上
# 追加の宣言
git add .

# ローカル設定をGitHub上に追加
git commit -m'create main.py'
git push origin master

GitHubをリロードすると、main.py追加されていることが確認できます。


4-3. GitHubActionsの設定

setup thisworkflowを選択しymlファイルを作成し下のコードをコピペして下さい。
ファイル名はmain.ymlに変更しておくと分かり易いです。
ちなみにymlはjsonよりも簡易なファイルだと思って下さい。

# ワークフロー名
name: linechatbot

# 実行のタイミング
# 自動送信のイミングは後で変更可能
on:
  push:

jobs:
  build:
    # Ubuntuの最新版環境内で処理を実行することを指定
    runs-on: ubuntu-latest

    # 実行する処理&コマンド指定
    steps:
      # リポジトリからチェックアウトして以下の処理を実行していく
      - uses: actions/checkout@v2
      - name: Set up Python 3.8
        uses: actions/setup-python@v1
        with:
          python-version: 3.8
      - name: Install dependencies
        run: |
          # pip更新
          python -m pip install --upgrade pip
          # 必要なパッケージインストール
          pip install line-bot-sdk
      - name: Run script
        run: |
          # main.pyの実行
          python main.py

実行に時間は少しかかりますが、LINEメッセージが届くはずです。
ここでエラーになる場合は、指定のファイル名が違う可能性があるので確認してみて下さい。


4-4. 自動送信のタイミング指定

on:
  schedule:
    - cron: '0 22 * * *'

github actionsのcronの時刻はUTCなので、日本時間に合わせるためにUTCマイナス15をすれば合います。
朝7時に受信するなら'0 22 * * *'で記述します。


5. 終わりに

最後まで読んで頂きありがとうございました。
次の投稿では、今回作成したbotのページに、自分のSNSやブログ、プロフィールも追加していきます。
まだまだ初学者ですので、もっと良い記述の方法があればご指摘お願い致します!

17
22
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
17
22