TopazBot - RTSP Discord Music bot for TopazChat
🌟 概要
TopazBotは、TopazChatのRTSPストリームを利用した高音質で低遅延なDiscordミュージックボットです。Linux等のサーバーで動作し、ストリーム音声をDiscordサーバーに提供します。
注意!!
「TopazBot」はMITライセンス下にありますが、「TopazChat」は商用利用禁止です。
✨ 主な機能
- 🧠 高品質: ステレオで高音質で低遅延なストリーム再生
- 🔒 セキュア: Discord署名検証による安全な通信
- 🌐 多フォーマット対応: ffmpegで柔軟なストリーム処理
💎 TopazChatについて
📝 詳細
TopazChatは、高品質・低遅延のRTSPサーバです。個人での利用は無料です。
TopazChatの費用は、開発者のよしたかさん@TyounanMOTIが負担しています。
サーバーの維持費や音声・動画配信のデータ転送料のために寄付をお願いします!→FANBOX
TopazChatのすべてのスポンサーは、SPONSORS.txtに記載されています。
💬 コミュニティ
- TopazChat Discord Server
join: https://discord.com/invite/fCMcJ8A
🚀 クイックスタート
TopazBotを導入するには、2つの方法があります。
1. 公開Botを利用する
一番簡単な方法です。以下のリンクからあなたのDiscordサーバーにBotを追加できます。
2. セルフホストで利用する
ご自身でサーバーを用意して、Botを運用する方法です。
📋 前提条件
- Linux サーバー
- FFmpeg (RTSP対応版)
- Node.js 22.x
- npm または yarn
- Discord Bot Token
- TopazChatストリーム
📦 依存関係
このライブラリは、さまざまなプラットフォームをサポートするために、以下のカテゴリーからそれぞれ1つずつインストールしてください。
依存関係は、パフォーマンスが優先される順に記載されています。
オプションの1つがインストールできない場合は、別のオプションをインストールしてみてください。
🐧 Debian or Ubuntu
node & npm:
node
: >=22npm
: >=6
discord.js (npm install)
discord.js
: ^14.21.0
@discordjs/voice (npm install):
@discordjs/voice
: ^0.18.0
@discordjs/opus (npm install):
@discordjs/opus
: “^0.10.0”
Encryption Libraries (npm install):
sodium-native
: ^5.0.6
Opus Libraries (npm install):
@discordjs/opus
: ^0.10.0
FFmpeg:
FFmpeg
(apt install ffmpeg等でサーバーにインストールして下さい)
pm2 (npm install): [オプション]
pm2
🛠️ インストール
# リポジトリをクローン
git clone https://github.com/emerauda/TopazBot.git topazbot
cd topazbot
# 依存関係をインストール
npm install
# 環境変数を設定
cp .env.example .env
# .envファイルを編集して必要な環境変数を設定
⚙️ 設定
.env
ファイルに以下の環境変数を設定:
DISCORD_TOKEN=your_discord_bot_token
🚀 デプロイ
# ビルド
npm run build
# スタート
npm run start
# コマンド登録
npm run register
# pm2を使ってプログラムスタート
npm i pm2 -g
pm2 start npm -n TopazBot -- start
🎮 コマンド一覧
TopazBotは以下のスラッシュコマンドに対応しています。
▶️ /play
- 説明: 指定されたストリームキーを使用して、TopazChatからのRTSPストリームを再生します。
- 使い方:
/play StreamKey: <あなたのストリームキー>
- パラメータ:
StreamKey
(必須): TopazChatのストリームキー。
🔄 /resync
- 説明: 接続が不安定な場合や、ストリームが途切れた際に再接続を試みます。
- 使い方:
/resync
⏹️ /stop
- 説明: 現在のストリーム再生を停止し、ボイスチャンネルから切断します。
- 使い方:
/stop
📜 利用規約とプライバシーポリシー
🏗️ アーキテクチャ
graph TD
subgraph "Discord Server"
User
DiscordVoiceChannel[Discord Voice Channel]
end
subgraph "Your Server (VPS)"
TopazBot
FFmpeg
end
subgraph "TopazChat Server"
TopazChat
end
User -- "/play" --> TopazBot
TopazBot -- "RTSP Stream Request" --> TopazChat
TopazChat -- "RTSP Stream" --> FFmpeg
FFmpeg -- "Opus Audio" --> TopazBot
TopazBot -- "Sends Audio" --> DiscordVoiceChannel
🔧 技術スタック
カテゴリ | 技術 | バージョン |
---|---|---|
言語 | TypeScript | ^5.8.3 |
ランタイム | Node.js | >=22.x |
フレームワーク | discord.js | ^14.21.0 |
音声処理 | @discordjs/voice | ^0.18.0 |
メディア処理 | FFmpeg | - |
RTSPサーバー | TopazChat | - |
Opusライブラリ | @discordjs/opus | ^0.10.0 |
暗号化 | sodium-native | ^5.0.6 |
パッケージ管理 | npm | >=6 |
テスト | Jest | ^30.0.3 |
リンター | ESLint | ^9.30.1 |
フォーマッター | Prettier | ^3.6.2 |
🧪 開発
📝 スクリプト
コマンド | 説明 |
---|---|
npm run build |
TypeScriptをビルド |
npm run dev |
開発サーバーを開始 |
npm run register |
Discordコマンドを登録 |
npm run lint |
型チェックを実行 |
npm run lint:fix |
型修正を実行 |
npm run format |
コードフォーマットを適用 |
npm run format:check |
コードフォーマットをチェック |
npm run test |
テストを実行 |
npm run test:watch |
テストをウォッチモードで実行 |
npm run test:coverage |
カバレッジ付きテストを実行 |
🔍 デバッグ
# ローカル開発サーバー起動
npm run dev
# テスト実行
npm test
# カバレッジレポート生成
npm run test:coverage
カバレッジレポートは coverage で確認可能
📂 Code structure
このボットのコードはTopazChat専用です。
私が参考にしたコード discordjs-japan/音声を再生する
🤝 コントリビューション
オープンソースコミュニティを素晴らしい学び、創造、そしてインスピレーションの場にしてくれるのは、コントリビューションです。あなたのいかなる貢献も心から感謝しています。
もしこのプロジェクトをより良くする提案があれば、リポジトリをフォークしてプルリクエストを作成してください。また、”enhancement” タグを付けてIssueを立てるだけでも構いません。 プロジェクトにスターを付けるのもお忘れなく!ありがとうございます!
- プロジェクトをフォークする
- 機能ブランチを作成する (
git checkout -b feature/AmazingFeature
) - 変更をコミットする (
git commit -m 'Add some AmazingFeature'
) - ブランチにプッシュする (
git push origin feature/AmazingFeature
) - プルリクエストを開く
プロセスや期待されることの詳細については、コントリビューションガイドラインをお読みください。
❤️ 寄付
📻 TopazBot
公開TopazBotサーバー維持に必要なカンパをお願いしております。
- TopazBot GitHub Sponsors
💎 TopazChat
TopazChatのサーバー維持費やデータ転送料について、開発者のよしたかさんがカンパを募っています。
- TopazChat FANBOX
🙏 クレジット
📻 TopazBot
- Aoi Emerauda @emerauda
💎 TopazChat
- よしたか様 @TyounanMOTI TopazChat開発者
📄 ライセンス
このプロジェクトは MIT ライセンスの下で公開されています。詳細は LICENSE ファイルをご覧ください。
👥 チーム
📞 サポート
- 🐛 バグレポート: Issues
- 💡 機能要望: Discussions
- 📧 お問い合わせ: aoi@emerauda.com