Genshin Circle Support Bot

Discord Bot

Discord Bot

Screenshots

Genshin Circle Support Bot - 1

About

Genshin Support Bot

概要

原神(Genshin Impact)に関するサポート機能を提供するDiscord Botです。キャラクター情報の検索、天賦素材の確認、誕生日通知、聖遺物評価など、原神プレイヤーに役立つ機能を搭載しています。

主な機能

🎂 誕生日機能

  • 誕生日チェック: 毎日午前1時にキャラクターの誕生日をチェック
  • 誕生日通知: 誕生日のキャラクターがいる場合、午後1時に公式SNS情報と共に通知
  • 誕生日イラスト案内: 公式Twitter/Instagram/TikTokのリンクを提供

🗡️ 天賦素材機能

  • 天賦素材チェック: 毎日午前5時に当日入手可能な天賦素材を通知
  • 国別表示: 天賦素材を国ごとに整理して表示
  • 曜日カラー: 曜日に応じた色分けでEmbed表示

🏆 聖遺物評価機能

  • 画像解析: Gemini APIを使用した聖遺物画像の自動解析
  • スコア計算: 会心率・会心ダメージ・攻撃力・HP・防御力のスコア算出
  • データベース連携: 聖遺物セット名の自動取得

📅 定期通知機能

  • HoyoLabログイン報酬: 毎日午前1時にログイン報酬更新を通知
  • デイリー報酬: 毎日午前5時にゲーム内デイリー報酬更新を通知
  • 幻想シアター: 毎月1日午前5時に更新通知
  • 螺旋: 毎月16日午前5時に更新通知

スラッシュコマンド

/character-information_view

キャラクター名を入力してキャラクター情報を表示

  • 表示項目: キャラ名、元素、国名、武器、天賦、声優、誕生日、実装日
  • カラー表示: 元素に応じた色分け

/tenpu-to-character_view

天賦素材名からそれを使用するキャラクターを表示

  • 表示項目: 該当キャラクターの詳細情報
  • カラー表示: 国に応じた色分け

/select_character_by_element_view

元素を選択してキャラクターを検索

  • 機能: ドロップダウンメニューによる直感的な操作
  • 主人公対応: 空と蛍の選択が可能

アーキテクチャ

クラス構成

DiscordBot

  • 役割: Bot全体の制御と初期化
  • 機能: イベント設定、タスクスケジューリング、時間監視
  • 主要メソッド:
    • calculate_next_monthly_time(): 月次タスクの次回実行時間計算
    • time_checker(): 定期タスクの実行監視
    • setup_events(): Discord イベントハンドラーの設定

BotRoutine

  • 役割: 定期実行される各種ルーチン処理
  • 機能: 誕生日チェック、天賦チェック、各種通知
  • 主要メソッド:
    • check_birthdays_message(): 誕生日キャラクターの確認
    • check_tenpu_names(): 天賦素材の確認
    • send_birthday_image_message(): 誕生日イラスト通知

ArtifactEvaluator

  • 役割: 聖遺物の画像解析と評価
  • 機能: Gemini APIによるOCR、スコア計算、データベース連携
  • 主要メソッド:
    • evaluate_artifact(): 聖遺物評価のメイン処理
    • get_artifact_stats_with_gemini(): Gemini APIによる画像解析
    • calculate_scores(): 各種スコアの計算

BotCommands

  • 役割: スラッシュコマンドの定義と処理
  • 機能: キャラクター検索、天賦検索、ユーザー入力処理
  • 主要メソッド:
    • setup_commands(): 全コマンドの登録
    • character_by_element(): 元素別キャラクター取得

CharacterSelectionView

  • 役割: インタラクティブなキャラクター選択UI
  • 機能: ドロップダウンメニューによる元素・キャラクター選択
  • 主要メソッド:
    • element_select_callback(): 元素選択時の処理
    • character_select_callback(): キャラクター選択時の処理

データベース構成

  • データベース: PostgreSQL
  • 主要テーブル:
    • character_list: キャラクター情報
    • element_list: 元素情報
    • country_list: 国情報
    • tenpu_list: 天賦素材情報
    • weapon_list: 武器情報
    • voice_actor_list: 声優情報

技術仕様

依存関係

  • discord.py: Discord API操作
  • psycopg2: PostgreSQL接続
  • google.generativeai: Gemini API
  • PIL: 画像処理
  • python-dotenv: 環境変数管理
  • asyncio: 非同期処理
  • requests: HTTP通信とAPI連携
  • re: 正規表現処理

環境変数

  • Genshin_Support_Bot_TOKEN: Discordボットのトークン
  • GEMINI_API_KEY: Gemini APIキー
  • psql_password: PostgreSQLパスワード
  • tmu_genshin_circle_home_CHANNEL_ID: ホームチャンネルID
  • tmu_genshin_circle_routine-announcement_CHANNEL_ID: 定期通知チャンネルID
  • tmu_genshin_circle_end-contents_CHANNEL_ID: 期間限定コンテンツ通知チャンネルID
  • tmu_genshin_circle_command_CHANNEL_ID: コマンド実行専用チャンネルID
  • tmu_genshin_circle_artifacts_CHANNEL_ID: 聖遺物評価専用チャンネルID

カラーテーマ

  • 元素カラー: 各元素に対応した色分け(風=緑、岩=オレンジ等)
  • 国カラー: 各国に対応した色分け
  • 曜日カラー: 曜日別の色分け
  • 聖遺物カラー: 聖遺物部位別の色分け

セットアップ手順

  1. 環境変数設定: .envファイルに必要な設定を記載
  2. データベース準備: PostgreSQLデータベースとテーブルを作成
  3. 依存関係インストール: pip install -r requirements.txt
  4. Bot実行: python genshin_bot.py

運用について

定期タスクスケジュール

  • 午前1時: 誕生日チェック、HoyoLabログイン報酬通知
  • 午前5時: 天賦素材チェック、デイリー報酬通知
  • 午後1時: 誕生日イラスト通知
  • 毎月1日: 幻想シアター更新通知
  • 毎月16日: 螺旋更新通知

エラーハンドリング

  • データベース接続エラーの適切な処理
  • タイムアウト処理(90秒)
  • Gemini API呼び出し失敗時の代替処理

注意事項

  • 聖遺物評価機能は特定のチャンネルでのみ動作
  • スラッシュコマンドは指定されたコマンドチャンネルでのみ実行可能
  • 画像解析には数秒の処理時間が必要