はじめに
タイトル通りですが、ガラル地方(ソード・シールド)に登場するポケモンの情報を教えてくれるLINE bot作ったので簡単にまとめたいと思います。以下、画面イメージです。
ローカル環境
pipenvを使って以下のPipfileから必要なライブラリをインストール。なぜかpsycopg2
が正常にインストールできないため、psycopg2-binary
を入れています。(この辺りの原因分かっていません。)
[[source]]
name = "pypi"
url = "https://pypi.org/simple"
verify_ssl = true
[dev-packages]
[packages]
flask = "==1.1.2"
line-bot-sdk = "==1.16.0"
sqlalchemy = "==1.3.17"
psycopg2-binary = "==2.8.5"
[requires]
python_version = "3.8"
LINE API側の設定
- (大体の人は持ってると思いますが)前提としてLINEアカウントが必要になります。アカウントを既に持ってる方は[LINE Developers]からAPI利用の登録をしてください。
- 登録後に新規チャネルを作成します。
- チャンネルを追加したら、[チャネル基本設定]->[LINE Official Account Manager]->[応答設定タブ]から、
応答メッセージ OFF
(ONでも良いけど一々デフォルトのメッセージが挟まれるとちょっと微妙)、Webhook ON
と設定します。 - チャネル基本設定にある
チャネルシークレット
、及びMessaging API設定にあるチャネルアクセストークン
を確認します。これは後々、Heroku側で環境変数の設定をする際に必要となります。
(こちらはHerokuでの作業後に必要)
- Messaging API設定から
Webhook設定
にいき、Webhook URL
に、https://{アプリ名}.herokuapp.com/callbackを入力。
Heroku側の設定
- [Heroku]に登録してください。
- 必要なコマンドをbrewでインストールします。
- 下記コマンドにてログイン。
- 下記コマンドにて環境変数を設定。
$ brew install heroku
$ brew install postgresql
$ heroku login
$ heroku config:set LINE_CHANNEL_ACCESS_TOKEN="***********" --app {アプリ名}
$ heroku config:set LINE_CHANNEL_SECRET="***********" --app {アプリ名}
PostgreSQLの用意
- herokuにログインした状況で空のDBを作成します。
- ターミナルからDBに接続します。
- DBのタイムゾーンを変更
- 良い感じのCSVデータをKaggleからダウンロードしてきます。
- Kaggleですが、結構ポケモンのデータが充実してます。(さすが世界的コンテンツ)
- tableを作成します。(下記SQL文は一例です。)
- CSVデータをDBにコピーします。下記の
with csv header
はCSVのヘッダーを無視して取り込むためです。必要に応じて変えていってください。
$ heroku addons:create heroku-postgresql:hobby-dev -a {アプリ名}
$ heroku pg:psql -a {アプリ名}
# 接続開始、テーブルcreate
app-name::DATABASE=> alter database {データベース名} set timezone = 'Asia/Tokyo';
app-name::DATABASE=> create table pokemon_status(
app-name::DATABASE=> id integer not null,
...
...
app-name::DATABASE=> type2 text,
app-name::DATABASE=> primary key (id));
# ローカルのCSVをDBへコピー
\copy pokemon_status from '{ファイル名}' with csv header;
各種ファイル
runtime.txt
Pythonのバージョンを記載します。
python-3.8.1
requirements.txt
サーバー側で必要になるライブラリを記載します。
Flask==1.1.2
line-bot-sdk==1.16.0
psycopg2==2.8.5
Procfile
Herokuで必要になるファイルで、プログラムの実行方法を記載します。
web: python main.py
おわりに
PS5楽しみ!!