メインコンテンツまでスキップ
バージョン: v2 Next 🚧

公式プラグイン

cc-discord-framework の公式プラグインは、ドメインごとの独立したパッケージとして提供されます。重い依存はそのプラグインの中だけに閉じるので、使わない機能の依存を抱えることはありません。

パッケージ何をするか追加する種別依存
@cc-discord-framework/utils定期実行・確認 UI・ページ送り・整形などの詰め合わせTask(tasks/)なし
@cc-discord-framework/musicキュー・再生制御と差し替え可能な音源機構TrackResolver(resolvers/)・StreamProvider(providers/)@discordjs/voiceopusscript
@cc-discord-framework/music-sourcesYouTube と SoundCloud を music の音源として追加(music の種別へ登録)youtubei.jssoundcloud.ts + yt-dlp / ffmpeg
@cc-discord-framework/ai複数プロバイダー対応の AI 機能と AiToolAiTool(ai/)ai(Vercel AI SDK)・zod・utils
npm 公開について

公式プラグインはすべて npm の @cc-discord-framework スコープで公開されています。各ページの bun add ... がそのまま使えます。フレームワーク本体(@cc-discord-framework/core)は peer dependency なので、プラグインを入れると一緒に要求されます。実際に動く構成例は、リポジトリの client/ を参照してください。

入れ方

どのプラグインも Clientplugins 配列に並べるだけです。

import { Client, GatewayIntentBits } from "@cc-discord-framework/core";
import { utils } from "@cc-discord-framework/utils";
import { music } from "@cc-discord-framework/music";
import { musicSources } from "@cc-discord-framework/music-sources";
import { ai } from "@cc-discord-framework/ai";

const client = new Client({
intents: [GatewayIntentBits.Guilds, GatewayIntentBits.GuildVoiceStates],
plugins: [
utils(),
music(),
musicSources(), // music() より後に置く
ai({ model: "google:gemini-2.5-flash" }),
],
});

config/ ファイルに分ける書き方

機能ごとに設定ファイルを分けることもできます。src/config/defineConfig() を置くと、intents はファイル間で合併(union)され、pluginspriority(大きいほど先、既定 0)の順にインストールされます。「音楽をやめるときは music.ts を消すだけで、要らなくなった intent も一緒に消える」という整理ができます。

// src/config/music.ts — 音楽のために必要な intent が音楽の隣にある
import { defineConfig, GatewayIntentBits } from "@cc-discord-framework/core";
import { music } from "@cc-discord-framework/music";
import { musicSources } from "@cc-discord-framework/music-sources";

export default defineConfig({
priority: 50, // utils(100)より後、ai(既定の 0)より先
intents: [GatewayIntentBits.GuildVoiceStates],
plugins: [music(), musicSources()],
});

順序の注意

musicSources()music() が追加した拡張点(resolvers/providers/)へコンポーネントを登録するので、必ず music() より後 に並べてください。1つのファイルに並べたプラグインは配列順のまま入ります。ファイルを分けた場合は priority で順序を決めます(上の例では music が 50、ai は既定の 0 なので music が先です)。

プラグインはコマンドを登録しません

これはこのフレームワークの設計方針です。公式プラグインが提供するのは エンジン(サービス・コンポーネント種別の自動ロード・イベント・設定)だけで、/play/ask のようなスラッシュコマンドは登録しません。

コマンドは Bot の機能 です。コマンド名・説明文・応答の文言・埋め込みの見せ方は Bot ごとに違うものなので、自分の src/commands/ に書きます。プラグインのサービス(this.services.audiothis.services.ai)が重い部分を引き受けるため、コマンド本体は数行で済みます。各プラグインのページに、リポジトリの client/src/ にある実際のコマンドを例として載せています。

コマンドの書き方そのものはコマンドガイドを参照してください。フレームワーク自体の導入はインストールからどうぞ。

互換性

すべての公式プラグインに共通です。

項目要件
ランタイムBun 1.4+(唯一のサポートランタイム)
discord.jsv14
フレームワーク@cc-discord-framework/core ^2.0.0(peer dependency)