AI Blog.

2026.07.16/TECH

🤖家庭用Discordサーバーに生成AI搭載Botを作った話

この記事でわかること

先日、妻とのコミュニケーション用に家庭用のDiscordサーバーを立てました。最初は単なるチャット代わりだったのですが、使っているうちに「これ、Botを入れたらもっと便利になるのでは?」という好奇心が抑えられなくなり、週末を使って開発してみました。

この記事では、次のことを共有します。

  • なぜ家庭用にDiscordサーバーを選んだのか
  • Discord Botの基本的な作り方
  • 生成AIを組み込んで日常を便利にした実例
  • 個人開発として運用するうえで気をつけたこと

エンジニアの方はもちろん、これからBot開発に挑戦してみたい方の参考になれば嬉しいです。

なぜ家庭用にDiscordなのか

夫婦間の連絡は一般的なメッセージアプリでも十分です。ですが、私は次の理由からDiscordを選びました。

  • チャンネルを話題ごとに分けられる(買い物、家事、雑談など)
  • Bot連携のAPIやライブラリが充実している
  • Webhookやスラッシュコマンドなど拡張の余地が大きい

実際にチャンネルを分けてみると、「買い物リスト」「今日の献立」「TODO」などが混ざらず、後から見返しやすくなりました。家庭内の情報も、整理されていると探すストレスが減るものです。

家庭用Discordサーバーの構成イメージ

Discord Botの基本構成

Botの開発はDiscord Developer Portalでアプリケーションを登録するところから始まります。大まかな流れは次のとおりです。

  1. Developer Portalでアプリケーションを作成する
  2. Botを追加してトークンを取得する
  3. 必要な権限(Intents)を有効化する
  4. サーバーにBotを招待する
  5. コードを書いて起動する

今回はPythonの discord.py を使いました。まずは動作確認用の最小構成です。

import discord
from discord.ext import commands

intents = discord.Intents.default()
intents.message_content = True

bot = commands.Bot(command_prefix="!", intents=intents)

@bot.event
async def on_ready():
    print(f"ログイン成功: {bot.user}")

@bot.command()
async def ping(ctx):
    await ctx.send("pong")

bot.run("YOUR_BOT_TOKEN")

!ping と送って pong が返ってくれば成功です。ここまで来ると、あとはやりたいことを実装するだけになります。

生成AIを組み込む

最近は生成AIのAPIが手軽に使えるようになったので、せっかくならBotに組み込んでみました。我が家で特に役立っているのが「献立提案」です。

冷蔵庫にある食材を伝えると、それを使ったレシピ案を返してくれます。妻が「今日なにつくろう」と悩む時間が減り、地味に効果を発揮しています。

import os
from openai import OpenAI

client = OpenAI(api_key=os.environ["OPENAI_API_KEY"])

@bot.command()
async def menu(ctx, *, ingredients: str):
    prompt = f"次の食材で作れる家庭向けの夕食を3つ提案して: {ingredients}"
    response = client.chat.completions.create(
        model="gpt-4o-mini",
        messages=[{"role": "user", "content": prompt}],
    )
    await ctx.send(response.choices[0].message.content)

!menu 鶏肉 じゃがいも 玉ねぎ のように送ると、献立案が返ってきます。ポイントは、プロンプトに「家庭向け」といった前提を含めておくことです。用途に合わせて条件を固定しておくと、期待した回答が返りやすくなります。

コマンド送信から生成AI応答までの流れ

実際に作った便利機能

献立提案のほかにも、いくつか機能を追加しました。

機能コマンド例内容
買い物リスト!add 牛乳買うものを追記して一覧管理
献立提案!menu 食材生成AIがレシピ案を返す
ゴミ出しリマインド自動送信曜日ごとに朝通知
天気通知自動送信毎朝その日の天気を投稿

リマインド系は discord.ext.tasks を使うと定期実行が簡単に書けます。

from discord.ext import tasks
import datetime

@tasks.loop(time=datetime.time(hour=7, minute=0))
async def morning_notice():
    channel = bot.get_channel(CHANNEL_ID)
    await channel.send("おはよう。今日は燃えるゴミの日です")

毎朝の小さな通知ですが、「言った言わない」がなくなるだけで家庭内の空気が少し穏やかになった気がします。

運用で気をつけたこと

個人開発とはいえ家族が使うものなので、いくつか注意しました。

  • トークンやAPIキーは環境変数で管理し、コードに直書きしない
  • 生成AIの回答はあくまで参考であることを共有しておく
  • コストが気になるAPIは軽量なモデルを選ぶ
  • 常時起動が必要なので安価なVPSやRaspberry Piで動かす

特にAPIキーの扱いは基本ですが重要です。うっかり公開リポジトリに上げてしまわないよう、.gitignore の設定も忘れずに行いました。

まとめ

家庭用DiscordサーバーにサクッとBotを入れるつもりが、生成AIまで組み込んでしまい、すっかり楽しい週末プロジェクトになりました。振り返ると、次の点が良かったと感じています。

  • 話題ごとのチャンネルで家庭内の情報が整理された
  • Botで定型作業を自動化でき、地味なストレスが減った
  • 生成AIで「考える手間」を少し肩代わりできた

技術は仕事だけでなく、身近な暮らしも豊かにしてくれます。小さなBotでも、家族に喜んでもらえると開発のモチベーションが上がるものです。興味を持った方は、まず !ping を返すだけのBotから始めてみてください。動いた瞬間の楽しさは、きっと次の一歩につながります。