モジュール性を重視したTypeScript製のDIscordボット開発テンプレート。

特長

  • モジュール式の開発により、機能の追加や管理が可能
    • 特に多機能Botなどの開発に向いています
  • TypeScriptにより型安全
  • ライブラリにDiscordenoを使用
    • モジュールシステムによりイベントリスナーを複数設置可能
  • ランタイムはDenoをサポート
    • セキュリティと保守性を担保

ダウンロード先

https://github.com/zozonteq/mobulable-discord-bot-template

開発スタイル

基本的に何か機能を付け足す場合はモジュールを新たに作成し、そこの機能を記述してく形になります。このような開発スタイルから、多機能Botの開発には特に向いています。

モジュールの作成

モジュールを作成するには、src/modulesの下に新たにTypeScriptファイルを作成し以下のように記述します。

import { BotModule } from "../module_system/bot_module.ts";
import { createEventHandlers} from "../deps.ts"
import { logger } from "../logger.ts";
 
export const exampleModule = new BotModule(
  {
    name: "Example Module",
    description: "ここに説明",
    handlers:createEventHandlers({
      ready: (_,payload) => {
        logger.info(`Hello, World!`)
      }
    })
  }
)
  • BotModuleクラスをインスタンス化することでモジュールを作成できます。
  • オプションの説明
    • name:string
      • モジュールの名前です
    • description : string
      • モジュールの説明をここに記述します
    • handlers
      • イベントハンドラの登録です
      • createEventHandlers()を呼び出し、引数にイベントを記述します
      • この例ではreadyイベントが呼ばれた際にHello, World!と出力するといったプログラムになります。
      • 他にもメッセージを受け取った時(createMessage)などのイベントが使えます。詳細についてはdiscordenoのドキュメントをご覧ください

モジュールのロード

モジュールを開発したら次はそれを読み込ませます src/modules.tsを開いて、new BotModuleManager({...})の引数に先ほどのexampleModuleのインスタンスを追加します。

import { BotModuleManager } from "./module_system/bot_module_manager.ts";
import { inviteLinkModule } from "./modules/invite-link.ts";
import { readyMessageModule } from "./modules/ready.ts";
import { exampleModule } from "./modules/example-module.ts"; // ++ 追加 
 
export const moduleManager = new BotModuleManager(
    [
        readyMessageModule          .Enable(),
        inviteLinkModule            .Enable(),
		exampleModule               .Enable() // ++ 追加
    ]
);
  • モジュールの内容を記述した.tsファイルのインポートを忘れないでください。 これで、exampleModuleが読み込まれるようになりました

起動

deno run dev

上記のコマンドでbotが開始されます。ログが流れるので、そこに「Hello,World!」と出力されれば成功です。