技術者向け説明書・仕様概要 - coro12343156/bankbot GitHub Wiki
動作確認環境
Python 3.9.X
必要パッケージはrequirements.txt
を参照
セットアップ
- リポジトリをダウンロード
token.ini
の該当場所をbotのトークンで置き換えるdata.db
のconfig
テーブルの各値を必要に応じて変更する
config
テーブルには以下の設定項目があります:
-
target_guilds
: スラッシュコマンドを即時に適用したいギルドidのリスト -
admins
: 管理者コマンドを使用できるユーザーidのリスト -
backup_channel
: バックアップを送信するチャンネルid -
backup_minutes
: バックアップを送信する間隔(分)
main.py
を実行してbotが起動します
仕様
データベース
データベースdata.db
には、口座情報、ログ、設定が格納されています。それぞれテーブル名はaccount
, log
, config
です。
account
テーブル
・name
(口座名), data
(口座データ)の2カラムで構成されており、name
には口座名、data
には後述するAccountクラスの属性をdict化したものを格納しています。
log
テーブル
・id
(ログid), time
(ログ生成時刻), name
(口座名), operator
(操作ユーザー), content
(ログの内容)の5カラムで構成されています。
id
: ランダムな英数字列16文字。ログ生成時に割り当てられます。time
,name
: ログが生成された時間と、そのログが該当する口座。
送金ログは同一idのログが両方の口座に割り当てられますが、口座名は送金元のものとなります。
operator
: そのログが該当する操作を行ったユーザー。/admin
コマンドのログは、誰が実行したかにかかわらずoperator
がadmin
となります。content
: ログの内容。
config
テーブル
・key
, type
(value
のデータ型), value
の3カラムで構成されています。
ラッパー
本botではdatabase.py
, embed.py
, functions.py
, bank.py
の4ファイルをラッパーとして使用しています。
database.py
・データベースを操作する関数を定義するファイル。関数の詳細はファイルを参照。
embed.py
・embedラッパーを定義するファイル。関数の詳細はファイルを参照。
functions.py
・bot全体で使用する関数を定義するファイル。関数の詳細はファイルを参照。
bank.py
・Accountクラスを定義するファイル。
Accountクラス
Accountクラスとは、口座情報を格納するクラスです。
口座名、口座管理者のユーザー名、口座タイプ、残高、メンバーリスト、紐づけられたログリスト、凍結状態をクラス変数に持ちます。
プログラム内で口座を扱う時は、データベースの口座情報をAccountクラスのインスタンスに変換して扱います。
また記録する際も、Accountクラスからデータベースに互換性のある形へ変換してから記録します。