logo TopazBot - RTSP Discord Music bot for TopazChat

Lint/Format Node.js CI CircleCI codecov TypeScript Node.js Discord License: MIT

Screenshot

English README


🌟 概要

TopazBotは、TopazChatのRTSPストリームを利用した高音質で低遅延なDiscordミュージックボットです。Linux等のサーバーで動作し、ストリーム音声をDiscordサーバーに提供します。

注意!!

「TopazBot」はMITライセンス下にありますが、「TopazChat」は商用利用禁止です。

✨ 主な機能


💎 TopazChatについて

📝 詳細

TopazChatは、高品質・低遅延のRTSPサーバです。個人での利用は無料です。

TopazChat ダウンロード

TopazChatの費用は、開発者のよしたかさん@TyounanMOTIが負担しています。

サーバーの維持費や音声・動画配信のデータ転送料のために寄付をお願いします!→FANBOX

TopazChatのすべてのスポンサーは、SPONSORS.txtに記載されています。

💬 コミュニティ

join: https://discord.com/invite/fCMcJ8A


🚀 クイックスタート

TopazBotを導入するには、2つの方法があります。

1. 公開Botを利用する

一番簡単な方法です。以下のリンクからあなたのDiscordサーバーにBotを追加できます。

ここをクリックしてBotを導入

2. セルフホストで利用する

ご自身でサーバーを用意して、Botを運用する方法です。

📋 前提条件

📦 依存関係

このライブラリは、さまざまなプラットフォームをサポートするために、以下のカテゴリーからそれぞれ1つずつインストールしてください。

依存関係は、パフォーマンスが優先される順に記載されています。

オプションの1つがインストールできない場合は、別のオプションをインストールしてみてください。

🐧 Debian or Ubuntu

node & npm:

discord.js (npm install)

@discordjs/voice (npm install):

@discordjs/opus (npm install):

Encryption Libraries (npm install):

Opus Libraries (npm install):

FFmpeg:

pm2 (npm install): [オプション]

🛠️ インストール

# リポジトリをクローン
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

🔄 /resync

⏹️ /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/音声を再生する

Discord.js Japan user Group


🤝 コントリビューション

オープンソースコミュニティを素晴らしい学び、創造、そしてインスピレーションの場にしてくれるのは、コントリビューションです。あなたのいかなる貢献も心から感謝しています。

もしこのプロジェクトをより良くする提案があれば、リポジトリをフォークしてプルリクエストを作成してください。また、”enhancement” タグを付けてIssueを立てるだけでも構いません。 プロジェクトにスターを付けるのもお忘れなく!ありがとうございます!

  1. プロジェクトをフォークする
  2. 機能ブランチを作成する (git checkout -b feature/AmazingFeature)
  3. 変更をコミットする (git commit -m 'Add some AmazingFeature')
  4. ブランチにプッシュする (git push origin feature/AmazingFeature)
  5. プルリクエストを開く

プロセスや期待されることの詳細については、コントリビューションガイドラインをお読みください。


❤️ 寄付

📻 TopazBot

公開TopazBotサーバー維持に必要なカンパをお願いしております。

💎 TopazChat

TopazChatのサーバー維持費やデータ転送料について、開発者のよしたかさんがカンパを募っています。

🙏 クレジット

📻 TopazBot

💎 TopazChat

📄 ライセンス

このプロジェクトは MIT ライセンスの下で公開されています。詳細は LICENSE ファイルをご覧ください。


👥 チーム

Contributors


📞 サポート


🌟 スター履歴

Star History Chart


📊 統計

GitHub Stats


⭐ このプロジェクトが気に入ったら、スターをお願いします! ⭐

GitHub stars GitHub forks GitHub watchers

Made with ❤️ by Aoi Emerauda