🇬🇧 English | 🇩🇪 Deutsch | 🇫🇷 Français | 🇯🇵 日本語
Data provided by XIVAPI.com
A smart, multilingual event planner for FFXIV groups — powered by XIVAPI v2.
- Full support for 4 languages: German, English, French, Japanese.
- Automatic background sync of all Duty Finder content from XIVAPI in all 4 languages.
- Server Language: Used for public event embeds, admin logs and channel messages.
- User Language: Used for DMs, ephemeral messages and personal commands (configurable via
/fcmylanguage).
- Intuitive event creation via direct message with
/fccreate. - Duty search with XIVAPI autocomplete or manual entry.
- Timezone selection (server time or local time) with an info panel.
- Duration prompt (hours or open-ended via button).
- Optional free text for notes.
- The public embed always displays the event content (Duty name) in all 4 languages.
- Content image from XIVAPI is displayed large and centered.
| Button | Status | Action |
|---|---|---|
| 🟩 Accept | accepted |
Role/Job selection (Tank, Healer, DPS, Allrounder) |
| 🟦 Tentative | tentative |
Role/Job selection, shown separately in the embed |
| 🟥 Decline | declined |
No job flow, immediate decline |
- Each click overwrites the previous status.
- Declined users don't count against the player limit and aren't pinged for reminders.
- Unique Jobs mode: Each job can only be selected once per event.
- Every status change (Accept, Tentative, Decline) is logged in the admin log channel.
- Differentiated log embeds with color coding and job/role info.
- Automatic reminder 10 minutes before event start (channel ping + DM to all participants).
- Declined users are not pinged.
- Expired events are automatically removed from the event channel and database after 8 hours (runs hourly).
- An admin log notification is sent for each cleaned event.
All commands are available as Hybrid Commands: Both as /slash-command and with the ! prefix.
| Command | Description |
|---|---|
/fccreate |
Create a new event (interactive DM flow) |
/fcmylanguage |
Set your personal language for DMs and ephemeral messages |
/fctime |
Display current Eorzea Time and UTC server time |
/fchelp |
Overview of all user commands |
Require Administrator permissions or the Owner ID set in
.env.
| Command | Description |
|---|---|
/facsetup |
Interactive setup wizard (language, event channel, timezone) |
/factimezone set <tz> |
Change the server timezone (e.g. Europe/Berlin, UTC) |
/factimezone status |
Show system time, server time and next scheduled ping |
/facadminlog on <#channel> |
Enable event logging in a channel |
/facadminlog off |
Disable event logging |
/facdutyupdate |
Manually trigger XIVAPI content sync |
/facadmin sync |
Force global slash command synchronization |
/facadmin cleanup |
Manually delete expired events (> 8h) |
/fachelp |
Overview of all admin commands |
- Python 3.11+
- A Discord Bot Token (Developer Portal)
pip install -r requirements.txt
# Linux / macOS
./run_bot.sh
# Windows
run_bot.bat
# Raspberry Pi (as background service)
python3 setup_service.pyOn first launch (without a .env file), the terminal wizard will ask for:
- Language:
de,en,frorja - Discord Bot Token
- Owner ID (your Discord User ID for admin permissions)
- Run
/facsetup→ Interactive wizard for language, event channel, timezone. - Run
/facadminlog on #log-channel→ Enable admin logging (optional). - Run
/fccreate→ Create your first event!
Safely terminate with Ctrl + C.
- Auto-Backup: The bot automatically backs up
planner.dbevery 24 hours to thebackups/folder (keeps last 7 days). - Manual Backup & Update: Run the provided terminal script to safely backup the database before pulling new updates:
- Linux/Mac:
./update_bot.sh - Windows:
update_bot.bat
- Linux/Mac:
- Restore: To restore from a backup, stop the bot, rename your backup file to
planner.db, and start the bot again.
Important
For security reasons, backups and restores must be done manually on the host terminal. There are no Discord commands for this.
Ein intelligenter, mehrsprachiger Event-Planer für FFXIV-Gruppen — basierend auf XIVAPI v2.
- Vollständige Unterstützung für 4 Sprachen: Deutsch, Englisch, Französisch, Japanisch.
- Automatischer Hintergrund-Sync aller Inhalte des Duty Finders aus XIVAPI in allen 4 Sprachen.
- Server-Sprache: Wird für öffentliche Event-Embeds, Admin-Logs und Kanal-Nachrichten verwendet.
- User-Sprache: Wird für DMs, ephemerale Nachrichten und persönliche Befehle verwendet (einstellbar via
/fcmylanguage).
- Intuitive Event-Erstellung per Privatnachricht mit
/fccreate. - Duty-Suche mit XIVAPI-Autocomplete oder manuelle Eingabe.
- Zeitzonen-Auswahl (Serverzeit oder Lokalzeit) mit Info-Panel.
- Dauer-Abfrage (Stunden oder offenes Ende via Button).
- Optionaler Freitext für Notizen.
- Das öffentliche Embed zeigt den Event-Inhalt (Duty-Name) immer in allen 4 Sprachen an.
- Content-Bild aus XIVAPI wird groß und zentral dargestellt.
| Button | Status | Aktion |
|---|---|---|
| 🟩 Zusage | accepted |
Rollen-/Job-Auswahl (Tank, Healer, DPS, Allrounder) |
| 🟦 Vielleicht | tentative |
Rollen-/Job-Auswahl, wird separat im Embed angezeigt |
| 🟥 Absage | declined |
Kein Job-Flow, sofortige Absage |
- Jeder Klick überschreibt den vorherigen Status.
- Abgesagte User zählen nicht gegen das Spielerlimit und werden nicht bei Erinnerungen gepingt.
- Unique-Jobs-Modus: Jeder Job kann nur einmal pro Event belegt werden.
- Jede Statusänderung (Zusage, Vielleicht, Absage) wird im Admin-Log-Kanal geloggt.
- Differenzierte Log-Embeds mit farbiger Kennzeichnung und Job/Rollen-Info.
- Automatische Erinnerung 10 Minuten vor Eventstart (Kanal-Ping + DM an alle Teilnehmer).
- Abgesagte User werden nicht gepingt.
- Abgelaufene Events werden nach 8 Stunden automatisch aus dem Event-Kanal und der Datenbank entfernt (stündlich).
- Für jedes bereinigte Event wird eine Admin-Log-Benachrichtigung gesendet.
Alle Befehle sind als Hybrid Commands verfügbar: Sowohl als /Slash-Command als auch mit dem Präfix !.
| Befehl | Beschreibung |
|---|---|
/fccreate |
Erstelle ein neues Event (interaktiver DM-Flow) |
/fcmylanguage |
Persönliche Sprache für DMs und ephemerale Nachrichten einstellen |
/fctime |
Aktuelle Eorzea-Zeit und UTC-Serverzeit anzeigen |
/fchelp |
Übersicht aller User-Befehle |
Erfordern Administrator-Rechte oder die in
.envhinterlegte Owner-ID.
| Befehl | Beschreibung |
|---|---|
/facsetup |
Interaktiver Setup-Wizard (Sprache, Event-Kanal, Zeitzone) |
/factimezone set <tz> |
Server-Zeitzone ändern (z.B. Europe/Berlin, UTC) |
/factimezone status |
Systemzeit, Serverzeit und nächsten Ping anzeigen |
/facadminlog on <#kanal> |
Event-Logging in einem Kanal aktivieren |
/facadminlog off |
Event-Logging deaktivieren |
/facdutyupdate |
XIVAPI Content-Sync manuell starten |
/facadmin sync |
Globale Slash-Command-Synchronisation erzwingen |
/facadmin cleanup |
Abgelaufene Events (> 8h) manuell löschen |
/fachelp |
Übersicht aller Admin-Befehle |
- Python 3.11+
- Ein Discord Bot Token (Developer Portal)
pip install -r requirements.txt
# Linux / macOS
./run_bot.sh
# Windows
run_bot.bat
# Raspberry Pi (als Hintergrunddienst)
python3 setup_service.pyBeim ersten Start (ohne .env-Datei) fragt der Terminal-Wizard nach:
- Sprache:
de,en,froderja - Discord Bot Token
- Owner-ID (deine Discord User-ID für Admin-Rechte)
/facsetupausführen → Interaktiver Wizard für Sprache, Event-Kanal, Zeitzone./facadminlog on #log-kanal→ Admin-Logging aktivieren (optional)./fccreate→ Dein erstes Event erstellen!
Sicher beenden mit Strg + C.
- Auto-Backup: Der Bot sichert die
planner.dbautomatisch alle 24 Stunden in denbackups/-Ordner (behält die letzten 7 Tage). - Manuelles Backup & Update: Führe das Update-Skript im Terminal aus. Es erstellt automatisch ein Backup der Datenbank, bevor neue Updates geladen werden:
- Linux/Mac:
./update_bot.sh - Windows:
update_bot.bat
- Linux/Mac:
- Wiederherstellung (Restore): Um ein Backup wiederherzustellen, stoppe den Bot, benenne die Backup-Datei in
planner.dbum und starte den Bot neu.
Important
Aus Sicherheitsgründen müssen Backups und Restores direkt im Host-Terminal durchgeführt werden. Es gibt dafür keine Discord-Befehle.
Un planificateur d'événements intelligent et multilingue pour les groupes FFXIV — propulsé par XIVAPI v2.
- Prise en charge complète de 4 langues : allemand, anglais, français, japonais.
- Synchronisation automatique en arrière-plan de tout le contenu de l'Outil de mission depuis XIVAPI dans les 4 langues.
- Langue du serveur : Utilisée pour les embeds d'événements publics, les logs d'administration et les messages de canal.
- Langue de l'utilisateur : Utilisée pour les MP, les messages éphémères et les commandes personnelles (configurable via
/fcmylanguage).
- Création intuitive d'événements par message privé avec
/fccreate. - Recherche de donjon avec autocomplétion XIVAPI ou saisie manuelle.
- Sélection du fuseau horaire (heure du serveur ou heure locale) avec panneau d'information.
- Choix de la durée (heures ou durée libre via bouton).
- Texte libre optionnel pour les notes.
- L'embed public affiche toujours le contenu de l'événement (nom du donjon) dans les 4 langues.
- L'image du contenu XIVAPI est affichée en grand format et centrée.
| Bouton | Statut | Action |
|---|---|---|
| 🟩 Accepter | accepted |
Sélection de rôle/job (Tank, Healer, DPS, Allrounder) |
| 🟦 Peut-être | tentative |
Sélection de rôle/job, affiché séparément dans l'embed |
| 🟥 Décliner | declined |
Pas de sélection de job, déclin immédiat |
- Chaque clic écrase le statut précédent.
- Les utilisateurs ayant décliné ne comptent pas dans la limite de joueurs et ne sont pas notifiés.
- Mode Jobs uniques : Chaque job ne peut être sélectionné qu'une seule fois par événement.
- Chaque changement de statut (Accepter, Peut-être, Décliner) est enregistré dans le canal de log.
- Embeds de log différenciés avec code couleur et information de job/rôle.
- Rappel automatique 10 minutes avant le début de l'événement (ping dans le canal + MP).
- Les utilisateurs ayant décliné ne sont pas notifiés.
- Les événements expirés sont automatiquement supprimés du canal et de la base de données après 8 heures (exécution horaire).
- Une notification de log admin est envoyée pour chaque événement nettoyé.
Toutes les commandes sont disponibles en tant que Commandes hybrides : /commande-slash et préfixe !.
| Commande | Description |
|---|---|
/fccreate |
Créer un nouvel événement (flux interactif en MP) |
/fcmylanguage |
Définir votre langue personnelle pour les MP et messages éphémères |
/fctime |
Afficher l'heure éorzéenne et l'heure UTC du serveur |
/fchelp |
Aperçu de toutes les commandes utilisateur |
Nécessitent les permissions Administrateur ou l'ID du propriétaire défini dans
.env.
| Commande | Description |
|---|---|
/facsetup |
Assistant de configuration interactif (langue, canal, fuseau horaire) |
/factimezone set <fh> |
Modifier le fuseau horaire du serveur (ex. Europe/Paris, UTC) |
/factimezone status |
Afficher l'heure système, l'heure serveur et le prochain ping |
/facadminlog on <#canal> |
Activer la journalisation dans un canal |
/facadminlog off |
Désactiver la journalisation |
/facdutyupdate |
Déclencher manuellement la synchronisation XIVAPI |
/facadmin sync |
Forcer la synchronisation globale des commandes slash |
/facadmin cleanup |
Supprimer manuellement les événements expirés (> 8h) |
/fachelp |
Aperçu de toutes les commandes administrateur |
- Python 3.11+
- Un Token de Bot Discord (Portail développeur)
pip install -r requirements.txt
# Linux / macOS
./run_bot.sh
# Windows
run_bot.bat
# Raspberry Pi (service en arrière-plan)
python3 setup_service.pyLors du premier lancement (sans fichier .env), l'assistant demandera :
- Langue :
de,en,frouja - Token du Bot Discord
- ID du propriétaire (votre ID Discord pour les permissions admin)
- Exécutez
/facsetup→ Assistant interactif pour langue, canal, fuseau horaire. - Exécutez
/facadminlog on #canal-log→ Activer la journalisation (optionnel). - Exécutez
/fccreate→ Créez votre premier événement !
Arrêt sécurisé avec Ctrl + C.
- Auto-Backup: Le bot sauvegarde automatiquement
planner.dbtoutes les 24 heures dans le dossierbackups/(conserve les 7 derniers jours). - Sauvegarde manuelle & Mise à jour: Exécutez le script dans le terminal pour sécuriser la base de données avant la mise à jour :
- Linux/Mac:
./update_bot.sh - Windows:
update_bot.bat
- Linux/Mac:
- Restauration (Restore): Pour restaurer, arrêtez le bot, renommez votre fichier de sauvegarde en
planner.db, et redémarrez le bot.
Important
Pour des raisons de sécurité, les sauvegardes et restaurations doivent être effectuées manuellement sur le terminal hôte. Il n'y a pas de commandes Discord pour cela.
FFXIV グループ向けのスマートな多言語イベントプランナー — XIVAPI v2搭載
- 4言語完全対応: ドイツ語、英語、フランス語、日本語
- XIVAPIからコンテンツファインダーの全データを4言語でバックグラウンド自動同期
- サーバー言語: 公開イベントEmbed、管理ログ、チャンネルメッセージに使用
- ユーザー言語: DM、エフェメラルメッセージ、個人コマンドに使用(
/fcmylanguageで設定可能)
/fccreateでダイレクトメッセージによる直感的なイベント作成- XIVAPIオートコンプリートまたは手動入力によるコンテンツ検索
- タイムゾーン選択(サーバー時間またはローカル時間)と情報パネル
- 所要時間の入力(時間指定またはオープンエンドボタン)
- オプションのフリーテキスト(メモ用)
- 公開Embedはイベント内容(コンテンツ名)を常に4言語で表示
- XIVAPIのコンテンツ画像を大きく中央に表示
| ボタン | ステータス | アクション |
|---|---|---|
| 🟩 参加 | accepted |
ロール/ジョブ選択(タンク、ヒーラー、DPS、オールラウンダー) |
| 🟦 未定 | tentative |
ロール/ジョブ選択、Embedに別途表示 |
| 🟥 辞退 | declined |
ジョブ選択なし、即時辞退 |
- クリックするたびに前のステータスが上書きされます
- 辞退したユーザーはプレイヤー上限にカウントされず、リマインダーの通知も受けません
- ユニークジョブモード: 各ジョブはイベントごとに1回のみ選択可能
- すべてのステータス変更(参加、未定、辞退)が管理ログチャンネルに記録されます
- 色分けとジョブ/ロール情報付きの差別化されたログEmbed
- イベント開始10分前に自動リマインダー(チャンネルピング+全参加者へDM)
- 辞退したユーザーには通知されません
- 期限切れのイベントは8時間後にイベントチャンネルとデータベースから自動的に削除されます(毎時実行)
- クリーンアップされた各イベントについて管理ログ通知が送信されます
すべてのコマンドはハイブリッドコマンドとして利用可能: /スラッシュコマンド と ! プレフィックスの両方に対応
| コマンド | 説明 |
|---|---|
/fccreate |
新しいイベントを作成(DMでのインタラクティブフロー) |
/fcmylanguage |
DM・エフェメラルメッセージ用の個人言語を設定 |
/fctime |
現在のエオルゼア時間とUTCサーバー時間を表示 |
/fchelp |
全ユーザーコマンドの一覧 |
管理者権限または
.envで設定されたオーナーIDが必要です。
| コマンド | 説明 |
|---|---|
/facsetup |
インタラクティブセットアップウィザード(言語、チャンネル、タイムゾーン) |
/factimezone set <tz> |
サーバーのタイムゾーンを変更(例: Asia/Tokyo, UTC) |
/factimezone status |
システム時間、サーバー時間、次のピング予定を表示 |
/facadminlog on <#チャンネル> |
チャンネルでイベントログを有効化 |
/facadminlog off |
イベントログを無効化 |
/facdutyupdate |
XIVAPI コンテンツ同期を手動トリガー |
/facadmin sync |
グローバルスラッシュコマンド同期を強制実行 |
/facadmin cleanup |
期限切れイベント(8時間以上)を手動削除 |
/fachelp |
全管理者コマンドの一覧 |
- Python 3.11+
- Discord Botトークン(開発者ポータル)
pip install -r requirements.txt
# Linux / macOS
./run_bot.sh
# Windows
run_bot.bat
# Raspberry Pi(バックグラウンドサービスとして)
python3 setup_service.py初回起動時(.env ファイルなし)、ターミナルウィザードが以下を確認します:
- 言語:
de,en,frまたはja - Discord Botトークン
- オーナーID(管理者権限用のDiscordユーザーID)
/facsetupを実行 → 言語、チャンネル、タイムゾーンのインタラクティブウィザード/facadminlog on #ログチャンネル→ 管理ログを有効化 (任意)/fccreate→ 最初のイベントを作成!
Ctrl + C で安全に終了
- 自動バックアップ: ボットは24時間ごとに
planner.dbをbackups/フォルダに自動バックアップします(過去7日分を保持)。 - 手動バックアップとアップデート: データベースを安全にバックアップしてから更新を取得するには、ホストのターミナルでスクリプトを実行してください:
- Linux/Mac:
./update_bot.sh - Windows:
update_bot.bat
- Linux/Mac:
- 復元 (Restore): バックアップから復元するには、ボットを停止し、バックアップファイルを
planner.dbに名前変更してからボットを再起動してください。
Important
セキュリティ保護のため、バックアップや復旧の操作はすべてホストのターミナルで手動で行う必要があります。Discordのコマンドはありません。
FatCatPlanner/
├── fatcat.py # Entry point, bot init, persistent views
├── db.py # SQLite database (events, signups, settings)
├── views.py # Discord UI (buttons, selects, embeds)
├── i18n.py # Localization (DE/EN/FR/JA)
├── ffxiv_data.py # FFXIV roles, jobs, custom content
├── xivapi_sync.py # XIVAPI v2 background sync
├── setup_views.py # Setup wizard UI
├── cogs/
│ ├── admin.py # Admin commands
│ ├── events.py # Event creation, reminders, cleanup
│ └── utils.py # User commands (/fctime, /fchelp, etc.)
├── .env.example # Environment variables template
├── requirements.txt # Python dependencies
├── run_bot.sh # Linux start script
├── run_bot.bat # Windows start script
└── setup_service.py # Systemd service generator
- XIVAPI: All Duty Finder data provided by xivapi.com
- FINAL FANTASY XIV © SQUARE ENIX CO., LTD. All Rights Reserved.
Licensed under GPL-3.0