Skip to content

add: 都道府県当てクイズbot#1208

Draft
hakatashi wants to merge 1 commit into
masterfrom
add/prefecture-quiz
Draft

add: 都道府県当てクイズbot#1208
hakatashi wants to merge 1 commit into
masterfrom
add/prefecture-quiz

Conversation

@hakatashi

Copy link
Copy Markdown
Member

概要

Wikipedia・Chakuwiki等の複数ソースからAIがヒントを自動生成し、progressiveに公開しながら都道府県を当てるSlackクイズbotを追加します。

主な機能

  • 都道府県当てクイズ とメッセージを送るとクイズ開始
  • gpt-4o-mini で5つのヒントを生成(難しい→簡単の順に公開、45秒ごと)
  • 都道府県名・旧国名・市区町村名をヒント中でマスク処理
  • 1人最大3回まで回答可能(有効な都道府県名のみカウント)
  • 正解時に実績を付与(初回・10回・47回・ヒント1での正解)

変更ファイル

新規 (prefecture-quiz/)

  • index.ts — メインbot (PrefectureQuizBot extends ChannelLimitedBot)
  • PrefectureAteQuiz.tsAteQuiz サブクラス(3回制限・問題メッセージ更新)
  • answers.ts — 正解リスト生成・バリデーション・マスク処理
  • answers.test.ts — ユニットテスト(15件)
  • hints.ts — gpt-4o-mini によるAIヒント生成(簡単順で生成→逆順出力)
  • municipalities.ts — 市区町村リストを localgovlistjp CSVからフェッチ・キャッシュ
  • oldProvinces.ts — 旧国名マッピング(47都道府県分)
  • sources.ts — Wikipedia・Chakuwiki・Wikitravel・コトバンク・todo-ranからソース収集
  • wikipedia.ts — MediaWiki API ユーティリティ(レート制限対策済み)

既存ファイルの変更

  • atequiz/index.tsisValidAnswer() / onHintPosted() フックを追加(後方互換)
  • lib/openai.ts — dev環境でFirestore db=null の場合のnull安全性を修正
  • achievements/achievements.tsprefecture-quiz カテゴリの実績を4つ追加
  • index.tsproductionBotsprefecture-quiz を追加

Test plan

  • npm test -- prefecture-quiz でユニットテストが通ることを確認
  • #sandbox都道府県当てクイズ を送信してクイズが起動することを確認
  • ヒントが45秒ごとにスレッドへ投稿され、問題メッセージが更新されることを確認
  • 有効な都道府県名での正解・不正解・3回制限が正しく動作することを確認
  • 都道府県名・旧国名・市区町村名がヒント中で 〇〇 にマスクされることを確認

🤖 Generated with Claude Code

Wikipedia・Chakuwiki等の複数ソースからAIがヒントを生成し、
progressiveに公開しながら都道府県を当てるSlackクイズbotを追加する。

- `prefecture-quiz/`: メインbot実装
  - AteQuizサブクラスで1人3回制限・ヒント後問題メッセージ更新を実装
  - gpt-4o-miniで5つのヒントを生成(簡単→難しい順で生成しコードで反転)
  - 都道府県名・旧国名・市区町村名をマスク処理
  - 市区町村リストをCSVから動的フェッチ(localgovlistjp)
  - Wikipedia・Chakuwiki・Wikitravel・コトバンク・todo-ranからソース収集
- `atequiz/index.ts`: `isValidAnswer()`・`onHintPosted()`フックを追加
- `lib/openai.ts`: dev環境でFirestore db=nullの場合のnull安全性を修正
- `achievements/achievements.ts`: prefecture-quizカテゴリの実績を4つ追加

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@tsg-ut-gemini-assistant

Copy link
Copy Markdown
Contributor

えへ~

ありがとう!

レビューさせてもらうにゃ!

🔍️🔍️🔍️️

@sonarqubecloud

Copy link
Copy Markdown

Quality Gate Failed Quality Gate failed

Failed conditions
13 Security Hotspots
C Reliability Rating on New Code (required ≥ A)

See analysis details on SonarQube Cloud

Catch issues before they fail your Quality Gate with our IDE extension SonarQube for IDE

@tsg-ut-gemini-assistant

Copy link
Copy Markdown
Contributor

🤖 I'm sorry @hakatashi, but I was unable to process your request. Please see the logs for more details.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant