Skip to content

Repository files navigation

🎮 FF14 Discord Bot

Final Fantasy XIV プレイヤー向けの Discord Bot です。
マーケットボード価格確認・キャラクター検索・AIフリートーク・X(Twitter)通知など、FC活動を便利にする機能を提供します。


✨ 機能一覧

💰 アイテム価格検索 (!item)

  • アイテム名(日本語・英語)でマーケットボードの最安値を確認
  • Universalis からリアルタイムで価格を取得
  • 部分一致検索・複数候補の表示に対応

🔍 キャラクター検索 (!charac)

  • サーバー名・キャラクター名で Lodestone を検索
  • キャラクターページへのリンクを表示

🔖 プロフィール登録 (!iam / !whoami)

  • 自分の FF14 キャラクターを Discord アカウントに紐付け
  • 登録後は !whoami でいつでも確認可能

🤖 AI フリートーク (!ft / !ftn / !ftjk)

  • Gemini 2.0 Flash を使った会話機能
  • 3 種類のキャラクター(ヤンキー / 丁寧な FF14 プロ / ツンデレ JK)
コマンド キャラクター 特徴
!ft ヤンキー 威勢がよく荒っぽいが根は悪くない
!ftn 丁寧な FF14 プロ 攻略情報も答えられる、Google 検索付き
!ftjk ツンデレ JK 口は悪いが根は優しい

🐦 X (Twitter) 通知 (!X)

  • @FF_XIV_JP の最新ツイートを 30 分ごとに自動チェック
  • 新規ツイートを指定チャンネルへ自動通知
  • Playwright による動的スクレイピング(リツイート除外)

🗄️ アイテム DB 更新 (!item_update)

  • Universalis からアイテム一覧を取得し、ローカル DB を最新化(管理者のみ)

🛠️ セットアップ

必要環境

  • Python 3.10+
  • pip

インストール

git clone https://github.com/<your-username>/<your-repo>.git
cd <your-repo>
pip install -r requirements.txt
playwright install chromium

設定ファイル

config.json をプロジェクトルートに作成してください。

{
    "DISCORD_TOKEN": "your_discord_bot_token",
    "CHANNEL_ID": 123456789012345678,
    "AI_API_KEY": "your_gemini_api_key",
    "AI_API_URL": "https://generativelanguage.googleapis.com",
    "DATA_FILE_WORLD_JP": "worlds_jp.json",
    "DATA_FILE_TWEETS": "sent_tweets.json"
}
キー 説明
DISCORD_TOKEN Discord Developer Portal で取得したトークン
CHANNEL_ID X 通知・Bot 起動通知を送るチャンネルの ID
AI_API_KEY Google AI Studio で取得した Gemini API キー
AI_API_URL Gemini API のエンドポイント
DATA_FILE_WORLD_JP JP ワールド名リスト JSON のパス
DATA_FILE_TWEETS 送信済みツイート ID を保存する JSON のパス

ワールドリスト

worlds_jp.json に日本サーバーのワールド名リストを用意してください。

["Aegis", "Atomos", "Carbuncle", "Garuda", "Gungnir", "Kujata", "Ramuh", "Tonberry", "Typhon", "Unicorn", "Alexander", "Bahamut", "Durandal", "Fenrir", "Ifrit", "Ridill", "Tiamat", "Ultima", "Valefor", "Yojimbo", "Zeromus", "Anima", "Asura", "Belias", "Chocobo", "Hades", "Ixion", "Masamune", "Pandaemonium", "Shinryu", "Titan"]

起動

python bot.py

📁 ディレクトリ構成

.
├── bot.py                  # メインエントリポイント
├── config.json             # 設定ファイル(要作成)
├── worlds_jp.json          # JP ワールド名リスト
├── tradable_items.json     # アイテム DB(自動生成)
├── sent_tweets.json        # 送信済みツイート ID(自動生成)
├── usernames.json          # ユーザープロフィール(自動生成)
├── items_search.py         # アイテム DB 初期構築スクリプト
└── cogs/
    ├── __init__.py
    ├── base_cog.py         # 共通基底クラス(Lodestone 検索など)
    ├── item_price_cog.py   # アイテム価格検索
    ├── item_update_cog.py  # アイテム DB 更新
    ├── search_charac_cog.py# キャラクター検索
    ├── profile_cog.py      # プロフィール登録・確認
    ├── freetalk_cog.py     # AI フリートーク
    ├── tweet_cog.py        # X 通知
    ├── help_cog.py         # ヘルプコマンド
    └── test_cog.py         # テスト用コマンド

📋 コマンド一覧

コマンド エイリアス 説明
!item <名前> !i, !価格 アイテムの価格を検索
!charac <鯖> <名> <姓> !search, !検索, !キャラ キャラクターを検索
!iam <鯖> <名> <姓> !register, !登録 プロフィールを登録
!whoami !myprofile, !自分 自分のプロフィールを表示
!ft <メッセージ> !freetalk AI と会話(ヤンキー)
!ftn <メッセージ> !freetalk_normal AI と会話(丁寧)
!ftjk <メッセージ> !tsundere AI と会話(ツンデレ JK)
!X [件数] 最新ツイートを表示
!ping !p Bot の応答速度を確認
!info !botinfo Bot の情報を表示
!help [コマンド] !h, !ヘルプ ヘルプを表示

管理者専用

コマンド 説明
!item_update アイテム DB を更新
!item_reload アイテム DB を再読み込み

🔧 アイテム DB の初期構築

初回セットアップ時は items_search.py を実行して tradable_items.json を作成してください。
処理に時間がかかる場合があります。

python items_search.py

その後は Discord 上の !item_update コマンドで差分更新できます。


📦 主な依存ライブラリ

ライブラリ 用途
discord.py Discord Bot フレームワーク
google-genai Gemini AI API
playwright X (Twitter) スクレイピング
requests HTTP リクエスト
beautifulsoup4 HTML パース
aiohttp 非同期 HTTP

⚠️ 注意事項

  • X のスクレイピングは利用規約の変更により動作しなくなる場合があります
  • Gemini API・Discord Token は外部に公開しないでください
  • config.json は必ず .gitignore に追加してください

📄 ライセンス

MIT License - 詳細は LICENSE を参照してください。

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages