Aller au contenu

FAQ

Général

Octavius est-il open source ?

Le code est privé pour l'instant. Une partie sera publiée en open source après le lancement public (cog par cog).

Quelles langues sont supportées ?

Français à 100% (commandes, embeds, docs, support). L'IA Gemini répond dans la langue du message utilisateur. EN/ES en préparation (Phase 3.B.12).

Combien de serveurs Octavius gère-t-il ?

Octavius est sharded automatiquement (Phase 1.2). Un seul process gère jusqu'à ~25 000 serveurs, et on peut déployer plusieurs process en parallèle au-delà.

Le bot peut-il fonctionner sans Postgres / Redis ?

Oui, mode dégradé : les fichiers JSON locaux servent de fallback. Aucune feature n'est cassée, juste pas de cache distribué ni de migration PG. Le système est conçu pour démarrer en mono-fichier puis scaler.

Tarifs

Pourquoi 4 plans au lieu de 2 ?

Pour matcher la taille de ta communauté sans payer pour ce que tu n'utilises pas. Un petit serveur perso n'a pas besoin du multi-bot music ni du voice TTS — Bronze suffit. Une grosse communauté gaming veut tout — Gold est fait pour ça.

Le Free est-il vraiment gratuit à vie ?

Oui. Aucune carte requise, aucune limite de temps. Tu peux utiliser Octavius gratuitement éternellement.

Quand sera dispo le paiement Stripe ?

Phase 4.2 du plan de dev. Pour l'instant tous les serveurs sont en Free par défaut. L'équipe peut grant manuellement un plan supérieur sur demande (early adopters, beta testers).

Lifetime Gold, c'est rentable ?

89,99 € one-shot = ~9 mois de Gold. Si tu prévois d'utiliser Octavius plus longtemps que ça, c'est rentable. Bonus : le badge « Founder » exclusif et garanti à vie.

Sécurité

Tenant isolation

Octavius est un bot multi-tenant par construction. Toutes les data sont stockées per-guild_id, et 11 tests pytest régressifs valident qu'aucune route API ne peut leak des données cross-guild. Voir Phase 2.1 dans instructions_archive.md.

RGPD

Conformité totale aux articles 15 (accès), 17 (effacement) et 20 (portabilité). Tape /mydata dans Discord. Voir doc RGPD.

Mes messages IA sont-ils stockés ?

Oui, uniquement pour la mémoire conversationnelle (10 à 75 messages selon le plan). Chiffrement Fernet AES-128 au repos. Reset auto après 30 min d'inactivité. Tu peux effacer ta mémoire à tout moment via /memory reset.

Les mots password, token, secret, bearer, api_key sont automatiquement filtrés avant stockage (substitués par [redacted]).

Sentry et logs

Si SENTRY_DSN est configuré, les exceptions sont envoyées à Sentry pour debug. send_default_pii=False (Sentry strippe les IPs/headers).

Logs structurés JSON disponibles via LOG_FORMAT=json pour ingestion Loki/ELK/CloudWatch.

Technique

Pile technique

  • Python 3.12 + discord.py 2.7
  • FastAPI pour l'API dashboard
  • PostgreSQL 16 (asyncpg)
  • Redis 7 (cache + IPC, en cours d'intégration)
  • Gemini 2.5 Flash (Google AI Studio)
  • ffmpeg + yt-dlp pour la musique
  • Sentry + Prometheus /metrics

Docker

Octavius tourne dans 4 containers Docker : octavius-bot, octavius-api, octavius-postgres, octavius-redis. Lavalink (5ème container) ajouté quand on active la multi-music (--profile music).

Voir CLAUDE.md pour le setup local complet.

Comment contribuer ?

Reach-out sur le serveur de support. On accepte les PRs sur certaines parties open source (cogs musique, i18n, presets de rôles).

Tenant Isolation

Tous les endpoints API qui prennent un guild_id en path vérifient :

  1. Que le token JWT du caller a bien gid == guild_id, OU
  2. Que le caller est is_dev (l'équipe Octavius, identifiée par DEV_USER_ID env)

Sinon → HTTP 403.

Pour les ressources avec un ID unique-global (ex: ticket_id, snapshot_id), on vérifie en plus que la ressource appartient à la guild active.

Test pytest régressif tests/test_tenant_isolation.py (11 tests) :

  • Filesystem isolation (transcripts par guild_id)
  • SQL queries leveling avec WHERE guild_id = $1
  • Routes API avec check token gid
  • Rate-limit /auth/switch-guild (anti-énumération)