TRIal & NyaaGenesis

https://github.com/tobakuro/DiscordGameBot

Django

Next.js

GitHub

TypeScript

MySQL

サーバー交流用discord botとゲームを作りました

とばくろ

島筒拓斗

山田、

shino

推しアイデア

ぜひサーバー内でのアイスブレイクの一つとして

作った背景

discordのbotを用いてサーバー内でのアイスブレイクとして便利な機能を作ろうと考えました。

推し技術

Geminiを用いたクイズ生成

プロジェクト詳細

Discordbot (TRIal)

使用技術

Bot フレームワーク

  • discord.py (Bot 本体・スラッシュコマンドの実装)
  • discord.ui (ボタン・モーダル・ドロップダウンなどのインタラクティブ UI)
  • asyncio / aiohttp (非同期イベントループ・ノンブロッキング HTTP 通信)

バックエンド・API

  • Django (Web フレームワーク全体、管理コマンドの提供)
  • Django REST Framework (REST API の実装)
  • MySQL (ゲーム戦績・ユーザー・ギルド情報の永続化)

AI 連携

  • Google Gemini API ( /quiz コマンドの問題文を自動生成)

インフラ・開発

  • GitHub Actions (PR 時に Copilot が自動コードレビュー)
  • flake8 (コードスタイルの静的解析)

Bot コマンド一覧

/quiz

  • Google Gemini API が自動生成した3択クイズを出題
  • ボタンで回答、60秒タイムアウト
  • 最初に正解したプレイヤーが勝者、結果を DB に記録

/quiz-result / /quiz-result-list

  • 個人またはサーバー全体のクイズ正誤統計を表示

/wakewake

  • ボイスチャンネルのメンバーを3人ずつランダムにグループ分け
  • 最低6人が必要、3人未満のグループは作らない

/flash

  • 暗算スピード勝負ゲーム
  • 桁数(1〜5)・数の個数(3〜20)・表示速度(0.2〜3.0秒)を設定可能
  • モーダルで答えを入力、最速正解者が勝者

/bluff_number

  • 3人対戦のブラフゲーム
  • 各プレイヤーに秘密の数字(1〜10)が配られ、合計値をめぐって宣言・チャレンジ
  • 3ラウンド制、スコアで最終勝者を決定

/nyaagenesis

  • 連携ブラウザゲーム「NyaaGenesis」の URL を DM で送信

ブラウザゲーム (NyaaGenesis)

使用技術

フロントエンド

  • Next.js (UI 全体のフレームワーク)
  • framer-motion (画面遷移・UIアニメーション)
  • Web Audio API (BGM・効果音をライブラリなしで合成)

バックエンド・通信

  • TypeScript (フロント・サーバー両方で型安全に開発)
  • Socket.IO 4 (リアルタイムの双方向通信)
  • Node.js カスタムサーバー (Next.js と Socket.IO を同一サーバーで統合)

インフラ

  • Railway (サーバーのデプロイ先)
  • GitHub Actions (PR 時に Copilot が自動コードレビュー)

NyaaGenesis のゲーム内容

  • 3人同時対戦、中央から飛んでくる弾を避ける弾幕回避ゲーム
  • HP 制(3つ)— 被弾でHP減少、0で脱落。最後の1人が勝者
  • 被弾後は2秒間の無敵時間あり
  • ノックバックアイテムがフィールドにランダム出現。取得して敵に体当たりすると吹き飛ばせる
  • 時間経過で弾の数・速度が増加し、徐々に難化

githubリポジトリ

https://github.com/tobakuro/DiscordGameBot_DodgeGame

とばくろ

@tobakuro