Skip to content

高品質なDiscord Bot - Devin AIエージェントと統合してDiscordから開発タスクを直接実行。非公式プロジェクトです。

Notifications You must be signed in to change notification settings

hawkymisc/devin2discord-unofficial

Repository files navigation

Devin2Discord (Beta)

高品質なDiscord Bot - Devin AIエージェントと統合してDiscordから開発タスクを直接実行

⚠️ Beta Version: このプロジェクトはベータ版です。機能追加や変更が頻繁に行われる可能性があります。

✨ 主な機能

  • 🤖 Discord統合: ボットをメンションしてタスクを実行
  • 🔄 リアルタイム更新: Discordスレッドで進行状況を確認
  • 📊 セッション管理: 複数セッションの追跡と管理
  • 🚀 プロセス復旧: 再起動時の自動セッション復旧
  • シンプル構成: Redis永続化による高速デプロイメント
  • 🛡️ 型安全性: TypeScript完全対応
  • 🎯 権限管理: ギルド別ロールベース制御
  • 🔧 設定柔軟性: チャンネル・ギルド別カスタム設定
  • 📈 包括的テスト: 139テストケースによる品質保証

🚀 クイックスタート

必要要件

  • Node.js 18+
  • Redis server
  • Discord Bot Token(以下のAPI取得手順を参照)
  • Devin API Key(以下のAPI取得手順を参照)

🔑 APIキー取得手順

Discord Bot Token取得

  1. Discord Developer Portalにアクセス

  2. 新しいアプリケーションを作成

    • 「New Application」をクリック
    • アプリケーション名(例:Devin2Discord Bot)を入力
    • 利用規約に同意して「Create」をクリック
  3. Botアカウントを作成

    • 左メニューから「Bot」を選択
    • 「Add Bot」をクリック
    • 確認ダイアログで「Yes, do it!」をクリック
  4. Botトークンを取得

    • Bot設定ページの「Token」セクションで「Copy」をクリック
    • ⚠️ 重要: このトークンは絶対に他人と共有しないでください
    • .envファイルのDISCORD_TOKENにコピーしたトークンを設定
  5. Bot権限を設定

    • 「Privileged Gateway Intents」で以下を有効化:
      • MESSAGE CONTENT INTENT(メッセージ内容の読み取りに必要)
      • SERVER MEMBERS INTENT(ギルドメンバー情報取得に必要)
    • 「Bot Permissions」で以下の権限を設定:
      • Send Messages
      • Create Public Threads
      • Send Messages in Threads
      • Manage Messages
      • Read Message History
      • Use Slash Commands
  6. BotをDiscordサーバーに招待

    • 左メニューから「OAuth2」→「URL Generator」を選択
    • 「Scopes」で「bot」にチェック
    • 「Bot Permissions」で手順5の権限にチェック
    • 生成されたURLをコピーしてブラウザで開く
    • Botを招待したいサーバーを選択して「Authorize」

Devin API Key取得

  1. Devin開発者アカウント

  2. API Access申請

    • ダッシュボードから「API Access」を選択
    • 利用目的と組織情報を入力
    • API利用規約に同意
  3. APIキーを生成

    • 承認後、「Generate API Key」をクリック
    • APIキーをコピー
    • ⚠️ 重要: このキーは安全に保管し、公開リポジトリにコミットしないでください
  4. APIキーを設定

    • .envファイルのDEVIN_API_KEYにコピーしたキーを設定

セキュリティに関する重要な注意事項

⚠️ APIキーの取り扱いについて

  • APIキーは絶対にGitリポジトリにコミットしないでください
  • .envファイルは.gitignoreに含まれていることを確認してください
  • 本番環境では環境変数として設定することを強く推奨します
  • APIキーが漏洩した場合は直ちに再生成してください

⚠️ Bot権限について

  • 必要最小限の権限のみを付与してください
  • 管理者権限は避け、個別の権限を選択してください
  • 定期的に権限設定を見直してください

インストール

  1. リポジトリをクローン:
git clone <repository-url>
cd devin2discord
  1. 依存関係をインストール:
npm install
  1. 環境設定ファイルを作成:
cp .env.example .env
  1. .envファイルを設定:
# 上記で取得したDiscord Bot Tokenを設定
DISCORD_TOKEN=your_discord_bot_token_here

# 上記で取得したDevin API Keyを設定
DEVIN_API_KEY=your_devin_api_key_here

# Redis接続URL(デフォルトのローカル設定)
REDIS_URL=redis://localhost:6379

# 実行環境(development/production)
NODE_ENV=development

# ログレベル(error/warn/info/debug)
LOG_LEVEL=info

⚠️ 重要な設定のポイント:

  • DISCORD_TOKENDEVIN_API_KEYは上記のAPIキー取得手順で得たものを必ず設定してください
  • .envファイルは絶対にGitにコミットしないでください(.gitignoreに含まれています)
  • 各環境(開発/本番)で適切な値を設定してください
  1. Redisサーバーを起動:

Dockerを使用する場合(推奨):

# Redis Dockerコンテナを起動
docker run -d --name redis -p 6379:6379 redis:7-alpine

# コンテナが起動しているか確認
docker ps

ローカルインストールの場合:

# macOSの場合(Homebrew使用)
brew install redis
redis-server

# Ubuntuの場合
sudo apt-get install redis-server
sudo systemctl start redis-server

# Redis接続確認
redis-cli ping
# 応答: PONG
  1. 動作確認とビルド:

初回セットアップ確認:

# 依存関係とTypeScriptのビルド確認
npm run build

# テスト実行(139テストケース)
npm test

# コード品質チェック
npm run lint

# 上記がすべて成功したら設定完了

アプリケーション起動:

# プロダクション用
npm run build
npm start

# 開発用(ホットリロード対応・推奨)
npm run dev

# デバッグモード
LOG_LEVEL=debug npm run dev

⚠️ 起動前の確認事項:

  • ✅ Discord Bot Tokenが正しく設定されている
  • ✅ Devin API Keyが正しく設定されている
  • ✅ Redisサーバーが起動している(redis-cli pingで確認)
  • ✅ BotがDiscordサーバーに適切な権限で参加している
  • ✅ 必要なロールがユーザーに付与されている

Docker Deployment

  1. Create .env file with your tokens

  2. Start with Docker Compose:

docker-compose up -d

📖 使用方法

基本コマンド

Discordでボットをメンションして以下のコマンドを使用:

  • @devin-bot run <タスク> - 新しいタスクを実行
  • @devin-bot status - アクティブなセッションを確認
  • @devin-bot stop <session_id> - 実行中のセッションをキャンセル
  • @devin-bot help - ヘルプメッセージを表示

使用例

@devin-bot run src/auth.jsのログインバグを修正して単体テストを追加してください

ボットの動作:

  1. タスク専用のスレッドを作成
  2. Devinセッションを開始
  3. リアルタイムで進行状況を更新
  4. 完了時に最終結果を表示

権限設定

各ギルドで以下の権限を設定可能:

  • 許可されたロール: コマンドを実行できるロール
  • 有効チャンネル: ボットが動作するチャンネル
  • 無効チャンネル: ボットを無効にするチャンネル
  • 同時セッション数: ギルドあたりの最大セッション数

⚙️ 設定

config.json

ボットの動作をカスタマイズ:

{
  "bot": {
    "commandPrefix": "@devin-bot",
    "responseTimeout": 300000,
    "pollInterval": 30000,
    "maxConcurrentSessions": 10
  },
  "guilds": {
    "default": {
      "allowedRoles": ["Developer", "Admin"],
      "maxConcurrentSessions": 5,
      "enabledChannels": [],
      "disabledChannels": []
    },
    "your-guild-id": {
      "allowedRoles": ["Tester"],
      "maxConcurrentSessions": 2,
      "enabledChannels": ["dev-channel"],
      "disabledChannels": ["general"]
    }
  },
  "devin": {
    "defaultTimeout": 1800000,
    "maxRetries": 3,
    "retryDelay": 5000
  },
  "redis": {
    "keyPrefix": "devin2discord:",
    "sessionTtl": 86400
  }
}

環境変数

変数 説明 デフォルト
DISCORD_TOKEN Discord botトークン 必須
DEVIN_API_KEY Devin APIキー 必須
REDIS_URL Redis接続URL redis://localhost:6379
NODE_ENV 実行環境 development
LOG_LEVEL ログレベル info

🏗️ アーキテクチャ

Discord Client ←→ Discord Bot Service ←→ Redis (セッション管理)
                        ↓
                   Devin API Client
                        ↓
                   Devin API

主要な設計原則

  • 単一サービス: Node.jsサービス1つによる簡潔なデプロイメント
  • Redis永続化: TTL付きRedisによるセッション状態管理
  • プロセス復旧: 再起動時の実行中セッション自動復旧
  • スレッド管理: 各タスクに専用Discordスレッドを作成
  • 型安全性: TypeScript完全対応による堅牢な開発

🛠️ 開発

プロジェクト構造

src/
├── commands/           # コマンドシステム
│   ├── command-handler.ts  # コマンドパーサーとバリデーション
│   └── commands.ts         # 個別コマンド実装
├── services/           # コアサービス
│   ├── discord-bot.ts  # Discord bot実装
│   ├── devin.ts        # Devin APIクライアント
│   └── redis.ts        # Redisサービス
├── types/              # TypeScript型定義
├── utils/              # ユーティリティ
│   ├── config.ts       # 設定管理
│   ├── errors.ts       # エラーハンドリング
│   └── logger.ts       # ロギング
└── index.ts           # アプリケーションエントリーポイント

tests/
├── unit/               # 単体テスト
├── integration/        # 統合テスト
└── mocks/              # モックオブジェクト

開発コマンド

  • npm run dev - ホットリロード付き開発モード
  • npm run build - TypeScriptビルド
  • npm test - テスト実行 (139テストケース)
  • npm run test:watch - 監視モードテスト
  • npm run test:coverage - カバレッジレポート
  • npm run lint - ESLint実行

品質保証

  • テストカバレッジ: 単体テスト + 統合テスト
  • 型安全性: TypeScript strict mode
  • コード品質: ESLint + Prettier対応
  • CI/CD対応: GitHub Actions対応

🔧 トラブルシューティング

よくある問題

  1. ボットが応答しない

    • Discordトークンと権限を確認
    • ボットがサーバーに適切なロールで参加しているか確認
    • config.jsonallowedRoles設定を確認
  2. Devin接続エラー

    • APIキーが正しいか確認
    • APIエンドポイントURLを確認
    • ネットワーク接続を確認
  3. セッション復旧が動作しない

    • Redis接続を確認
    • Redis永続化が有効になっているか確認
    • セッションTTL設定を確認
  4. 権限エラー

    • ユーザーのロールがallowedRolesに含まれているか確認
    • チャンネルがenabledChannelsに含まれているか確認
    • disabledChannelsにチャンネルが含まれていないか確認

ログ確認

デバッグ用ログの確認方法:

# Docker
docker-compose logs -f bot

# ローカル開発
npm run dev

# 本番環境
npm start

# 特定ログレベル
LOG_LEVEL=debug npm run dev

開発時のヒント

  • テスト実行: npm test
  • 型チェック: npx tsc --noEmit
  • カバレッジ確認: npm run test:coverage

📄 ライセンス

MIT License

🤝 コントリビューション

プロジェクトへの貢献を歓迎します!

開発の流れ

  1. リポジトリをフォーク
  2. 機能ブランチを作成: git checkout -b feature/amazing-feature
  3. 変更を実装
  4. テストを追加/更新: npm test
  5. コード品質チェック: npm run lint
  6. TypeScriptビルド確認: npm run build
  7. コミット: git commit -m 'feat: add amazing feature'
  8. プッシュ: git push origin feature/amazing-feature
  9. プルリクエストを作成

コーディング規約

  • TypeScript strict mode準拠
  • ESLint規則に従う
  • 新機能には必ずテストを追加
  • コミットメッセージはConventional Commits形式
  • すべてのテストが通ることを確認

バグ報告・機能提案

Issuesにて報告・提案をお願いします。

🙏 謝辞

  • Discord.js - Discord API wrapper
  • Redis - インメモリデータベース
  • TypeScript - 型安全なJavaScript
  • Jest - テストフレームワーク

開発チーム: @hawkymisc

About

高品質なDiscord Bot - Devin AIエージェントと統合してDiscordから開発タスクを直接実行。非公式プロジェクトです。

Resources

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages