はじめに
タイトル通りですが、ガラル地方(ソード・シールド)に登場するポケモンの情報を教えてくれる 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 楽しみ!!