今日よりちょっと賢い明日、今よりずっと自由な未来

Liberal Arts & IT

IT

割勘計算をしてくれるLINE botを作ってみた③【LINE bot + Heroku+Python】

投稿日:

割勘計算(立替計算)してくれるLINE botがあったら友達と遊びに行くときに便利だなーと思い、こんなものを作ってみました。

LINE botを作る=アプリ公開ということになるので、自分が使っているレンタルサーバー(Xserver)にプログラムをアップする必要があるのかと思っていました。
が、今回はHerokuを使えばアプリを1つまで無料公開できると聞いたので使ってみることに。

無料でLINE botを公開できるとは・・・!
LINE developersもHerokuも太っ腹ですね。。。

LINE bot公開までの大体の流れ

  1. LINE公式アカウントを「応答モード:Bot」で作成
    • LINE Official Account Managerで作ります
    • アカウント認証をリクエストして認証アカウントになっておくと、Bot開発時に使うMessaging APIで使える機能が増えます
  2. 作成したアカウントのチャネルを作る
    • LINE Developersで作ります
    • 実際にLINE botを使う時に話す相手となるのはこっち。
      つまり、トプ画などにこだわる必要があるのはLINE Official Account Managerで作ったアカウントではなくて、ここで作るチャネル
  3. Herokuのアカウントを作成
    • 「Heroku」で検索してアカウント登録するだけ
  4. 以降、とりあえずオウム返しのLINE botを作ることを目指す
    1. Herokuにアプリを追加
      • このアプリでLINE botを開発することになる
    2. HerokuアプリにLINEチャネルを紐づける
      • Herokuアプリにチャネルシークレットを登録する
      • LINEアカウントに来たメッセージを拾うため
    3. Gitを使って変更内容を反映
      • 今後もプログラムを更新する度にGit Pushが必要です。
    4. LINEチャネルのWebhook URLを設定する
      • HerokuアプリのURLを設定することになる
      • このアカウントにメッセージが来たらこのURLに応答方法を決めてもらうんですよ、という取り決め

4までできれば「請求:100」と言われたら「add 100」と返す、くらいのことはできます。
参考にしたのはこちらのサイト。とりあえずオウム返しのLINE botが出来ればOKです。

Python + HerokuでLINE BOTを作ってみた

ユーザー情報を取得する方法

送られてきたメッセージの内容は勿論、ユーザー名(ユーザーアカウントの表示名)やグループIDを取得することができます。
非認証アカウントでは、友達登録してくれたユーザーの情報しか取得できないようです。
従って、グループに参加しているユーザーの人数を知るためには、参加者全員に友達になってもらって何かしらのメッセージを送ってもらう必要があると。。。
割勘計算の場合、支払していない人も「請求:0」と送って参加していることを示してもらわないといけません。

Herokuのデータベースを使って割勘計算

割勘計算をするためには、ユーザーが請求した金額を保存して、加算・計算できないといけません。
データベースが必要です。
Herokuのすごいところは、DBも無料で使わせてくれるところ。

PostgresというDBを使います。
ブラウザ上で見るHerokuのアプリページのResourceに、「Heroku Postgres」を追加するだけで利用開始できます。

コマンドプロンプト上で以下のコードを打てば、SQL文を書くことも可能。

私の割勘ボットでは、あらかじめ以下のようなテーブルを作っておいてから、LINE botの処理の中でデータのINSERTをしています。

MySQLしか使ったことがなかったのでちょっと混乱。
SERIALという型で自動採番の主キーを作ってもらえるみたいです。

PythonからPostgresを編集する書き方

アプリのプログラムとしてはだいぶ省略していますが、SELECT文、INSERT文、DELETE文はこんな感じで書けます。

%sに単一の項目を代入する時にも、

(id,)というように最後にカンマが必要です。

完成品はこちら
とりあえず自分の友達に使ってもらうことで立替計算のわずらわしさから解消されたい!

-IT

Copyright© Liberal Arts & IT , 2021 All Rights Reserved Powered by STINGER.