feat: full feature suite — welcome, modmail, security, staff, avis, rules, links, shop, custom
All checks were successful
ci / ci (push) Successful in 1m1s

features/shared.py: per-guild JSON config store
features/welcome.py: on_member_join message + invite tracking + /invites
features/modmail.py: DM-based tickets with staff relay
features/security.py: antiraid (join rate detection), ban protection, join/leave log
features/staff.py: staff ranks, promote/demote, /staff_list
features/avis.py: /avis modal -> embed in configured channel
features/rules.py: /rules_setup with accept button + role assignment
features/links.py: /links panel, /links_setup, /links_remove
features/shop.py: /shop_announce new product embeds
features/custom.py: /botstatus, /custom_send, /embed
This commit is contained in:
Mathis 2026-10-02 19:45:46 +02:00
parent 33b9303948
commit 5d9baee102
12 changed files with 911 additions and 2 deletions

21
bot.py
View file

@ -25,8 +25,25 @@ class VisionBot(commands.Bot):
async def setup_hook(self):
logger.info("Chargement des cogs...")
await self.load_extension("commandes.hello")
await self.load_extension("tickets.cog")
extensions = [
"commandes.hello",
"tickets.cog",
"features.welcome",
"features.modmail",
"features.security",
"features.staff",
"features.avis",
"features.rules",
"features.links",
"features.shop",
"features.custom",
]
for ext in extensions:
try:
await self.load_extension(ext)
logger.info(f" ✓ {ext}")
except Exception as e:
logger.error(f" ✗ {ext}: {e}")
self.tree.on_error = self.on_app_command_error