技術者向け説明書・仕様概要 - coro12343156/bankbot GitHub Wiki

動作確認環境

Python 3.9.X

必要パッケージはrequirements.txtを参照

セットアップ

  1. リポジトリをダウンロード
  2. token.iniの該当場所をbotのトークンで置き換える
  3. data.dbconfigテーブルの各値を必要に応じて変更する

configテーブルには以下の設定項目があります:

  • target_guilds: スラッシュコマンドを即時に適用したいギルドidのリスト

  • admins: 管理者コマンドを使用できるユーザーidのリスト

  • backup_channel: バックアップを送信するチャンネルid

  • backup_minutes: バックアップを送信する間隔(分)

  1. main.pyを実行してbotが起動します

仕様

データベース

データベースdata.dbには、口座情報、ログ、設定が格納されています。それぞれテーブル名はaccount, log, configです。

accountテーブル

name(口座名), data(口座データ)の2カラムで構成されており、nameには口座名、dataには後述するAccountクラスの属性をdict化したものを格納しています。

logテーブル

id(ログid), time(ログ生成時刻), name(口座名), operator(操作ユーザー), content(ログの内容)の5カラムで構成されています。

  1. id: ランダムな英数字列16文字。ログ生成時に割り当てられます。
  2. time, name: ログが生成された時間と、そのログが該当する口座。

送金ログは同一idのログが両方の口座に割り当てられますが、口座名は送金元のものとなります。

  1. operator: そのログが該当する操作を行ったユーザー。/adminコマンドのログは、誰が実行したかにかかわらずoperatoradminとなります。
  2. 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クラスからデータベースに互換性のある形へ変換してから記録します。