魔法でシステムは作れない

魔法でシステムは作れない

甘えん坊SEが独学を進めるためのノート

【python】Discordの自作BOTの小話

某うま擬人化のゲーム仲間から依頼が来たので、その話でも。
依頼内容スプレッドシートからデータを抽出してDiscordのチャンネル上に表示する対話型BOTが欲しい」

アーキテクト
・言語:python

・主なライブラリ:discord, gspread

環境構築の話は割愛する。以下の先駆者様の記事が見やすく便利なため。

note.com

 

qiita.com

 

簡易的なシーケンスは以下の通り

f:id:hummer31:20210603185605p:plain

コマンドラインからpythonアプリケーション(BOT)をキック
・初期シーケンスでスプレッドシートの値を読み込み
・Discordのサーバに対してRunを実行
・以降、サーバ所属者から定型コマンド形式のリクエストが飛んで来たら処理する(非同期)

ソースコードはこちらの記事へ別管理(Markdown記法に切り替えたいため)

【python】BOTソースコードサンプル+スプレッドシートアクセスサンプル - 魔法でシステムは作れない

 

一個だけ解説を入れるとするなら、
スプレッドシートの日付データはシリアル値であり、
1899年12月30日から何日経ったというオフセット値を持つため
そのままシリアル値を日付型へ変換するとうまくいかないこと。

f:id:hummer31:20210603192806p:plain

1行目では、実際にセルの値を取得している。:日付シリアル値
2行目では、1899年12月30日+日付シリアル値で実際の日付データを計算
(YYYY-MM-DD MI24:mm:ss形式)
※[:10]はLEFT(文字列,10)と同義

3行目ではYY-MM-DDからYY/MM/DDへ置換。

オチになるけど、正規表現でやった方が良いね