Agentive
自動化ラボ

Discord Bot × AI で業務自動化する方法:問い合わせ対応からタスク管理まで

約10分で読めます

Discordはもはやゲーマーだけのツールではない。小規模チームの業務コミュニケーション基盤として使われるケースが急増している。そこにAIを組み込んだBotを置くことで、驚くほど多くの業務を自動化できる。

なぜDiscord × AIなのか

SlackやTeamsではなくDiscordを選ぶ理由は3つだ。

  1. 無料で十分使える: Bot稼働に追加費用がかからない
  2. API制限が緩い: 小規模チームなら制限にまず引っかからない
  3. 開発の自由度が高い: discord.jsの情報量が豊富で実装が速い

基本構成

Discord Bot (Node.js + discord.js)
  ├── メッセージ監視
  ├── Anthropic API 呼び出し
  └── 結果をチャンネルに投稿

最小構成のセットアップ

mkdir discord-ai-bot && cd discord-ai-bot
npm init -y
npm install discord.js @anthropic-ai/sdk dotenv
// bot.js
import { Client, GatewayIntentBits } from 'discord.js';
import Anthropic from '@anthropic-ai/sdk';
import 'dotenv/config';

const discord = new Client({
  intents: [
    GatewayIntentBits.Guilds,
    GatewayIntentBits.GuildMessages,
    GatewayIntentBits.MessageContent,
  ],
});

const anthropic = new Anthropic();

discord.on('messageCreate', async (message) => {
  if (message.author.bot) return;
  if (!message.content.startsWith('!ask')) return;

  const question = message.content.replace('!ask ', '');
  const response = await anthropic.messages.create({
    model: 'claude-sonnet-4-20250514',
    max_tokens: 1024,
    messages: [{ role: 'user', content: question }],
  });

  await message.reply(response.content[0].text);
});

discord.login(process.env.DISCORD_TOKEN);

これだけで「!ask 〜」と打つとAIが回答するBotが動く。

実践的な自動化パターン

パターン1: 問い合わせ自動応答

チームのFAQチャンネルに蓄積されたナレッジをAIに読ませ、自動回答させる。

const SYSTEM_PROMPT = `あなたはチームのサポート担当です。
以下のFAQに基づいて回答してください。FAQにない質問は「担当者に確認します」と返してください。

FAQ:
- 経費精算: Slackの#keihi チャンネルでフォームを提出
- 有給申請: 社内ポータルの勤怠管理から申請
- VPN接続: IT部門のマニュアル https://example.com/vpn を参照
`;

// メッセージ処理部分
const response = await anthropic.messages.create({
  model: 'claude-sonnet-4-20250514',
  max_tokens: 512,
  system: SYSTEM_PROMPT,
  messages: [{ role: 'user', content: question }],
});

ポイントは回答範囲を制限すること。「何でも答えるBot」ではなく、FAQベースで答えられないものは人間にエスカレーションする設計にする。

パターン2: 議事録の自動要約

ミーティングチャンネルに流れたメッセージをまとめて要約する。

discord.on('messageCreate', async (message) => {
  if (message.content !== '!summary') return;

  // 直近50件のメッセージを取得
  const messages = await message.channel.messages.fetch({ limit: 50 });
  const conversation = messages
    .reverse()
    .filter(m => !m.author.bot)
    .map(m => `${m.author.displayName}: ${m.content}`)
    .join('\n');

  const response = await anthropic.messages.create({
    model: 'claude-sonnet-4-20250514',
    max_tokens: 1024,
    messages: [{
      role: 'user',
      content: `以下のチャット内容を議事録形式で要約してください。
決定事項・TODO・次回のアクションに分けてください。

${conversation}`,
    }],
  });

  await message.reply(`📋 **議事録要約**\n${response.content[0].text}`);
});

パターン3: 日報の自動生成

個人の活動ログから日報を自動生成する。

// !daily コマンドで、その日の自分のメッセージから日報を生成
discord.on('messageCreate', async (message) => {
  if (message.content !== '!daily') return;

  const today = new Date();
  today.setHours(0, 0, 0, 0);

  const channels = message.guild.channels.cache.filter(c => c.isTextBased());
  let allMessages = [];

  for (const [, channel] of channels) {
    try {
      const msgs = await channel.messages.fetch({ limit: 100, after: today });
      const userMsgs = msgs.filter(m => m.author.id === message.author.id);
      allMessages.push(...userMsgs.values());
    } catch { /* アクセス権のないチャンネルはスキップ */ }
  }

  const log = allMessages.map(m => `[#${m.channel.name}] ${m.content}`).join('\n');

  const response = await anthropic.messages.create({
    model: 'claude-sonnet-4-20250514',
    max_tokens: 512,
    messages: [{
      role: 'user',
      content: `以下の今日の活動ログから日報を生成してください。\n\n${log}`,
    }],
  });

  await message.author.send(`**本日の日報**\n${response.content[0].text}`);
});

コスト管理のコツ

AI APIを呼ぶとコストが発生する。以下の対策が実用的だ。

  • レート制限: 1ユーザーあたり1分間に3回までなどの制限を設ける
  • キャッシュ: 同じ質問には前回の回答を返す
  • モデル選択: 簡単な質問にはHaikuクラス、複雑な質問にはSonnetを使い分ける
const rateLimiter = new Map();

function checkRateLimit(userId) {
  const now = Date.now();
  const userHistory = rateLimiter.get(userId) || [];
  const recent = userHistory.filter(t => now - t < 60000);
  if (recent.length >= 3) return false;
  recent.push(now);
  rateLimiter.set(userId, recent);
  return true;
}

デプロイ先の選択肢

  • 自宅サーバー / Raspberry Pi: 月額0円。電気代だけ
  • Railway / Render: 無料枠あり。小規模なら十分
  • VPS(Vultr / Linode): 月$5程度。安定稼働が必要なら

個人開発なら、最初はRailwayの無料枠で十分だ。

まとめ

Discord Bot × AIの組み合わせは、チーム業務の自動化において最もコストパフォーマンスが高い選択肢のひとつだ。問い合わせ対応、議事録要約、日報生成など、「人がやらなくてもいい作業」をBotに任せることで、チームの生産性を確実に上げられる。

まずは簡単なQ&A Botから始めて、チームの反応を見ながら機能を増やしていくのがおすすめだ。

関連記事

A

Agentive 編集部

AIエージェントを実際に使い倒す個人開発者。サイト制作の自動化を実践しながら、その知見を発信しています。