Migration de Kuby vers disnake
This commit is contained in:
parent
dc6e235f27
commit
c8c579eefe
36 changed files with 1205 additions and 1253 deletions
|
|
@ -1,6 +1,5 @@
|
|||
import discord
|
||||
from discord import app_commands
|
||||
from discord.ext import commands
|
||||
import disnake
|
||||
from disnake.ext import commands
|
||||
import json
|
||||
import os
|
||||
from typing import Optional
|
||||
|
|
@ -39,9 +38,9 @@ def save_settings(guild_id: int, settings: dict) -> None:
|
|||
|
||||
# --- MODALS DE CONFIGURATION DU RÈGLEMENT (BACK-END) ---
|
||||
|
||||
class RulesTitleModal(discord.ui.Modal, title="📜 Titre du Règlement"):
|
||||
class RulesTitleModal(disnake.ui.Modal, title="📜 Titre du Règlement"):
|
||||
"""Modal pour configurer le titre du règlement"""
|
||||
title_input = discord.ui.TextInput(
|
||||
title_input = disnake.ui.TextInput(
|
||||
label="Titre du règlement",
|
||||
placeholder="Ex: 📜 Règlement de [Nom du Serveur]",
|
||||
min_length=1,
|
||||
|
|
@ -55,7 +54,7 @@ class RulesTitleModal(discord.ui.Modal, title="📜 Titre du Règlement"):
|
|||
self.settings = settings
|
||||
self.on_update_callback = on_update_callback
|
||||
|
||||
async def on_submit(self, interaction: discord.Interaction):
|
||||
async def on_submit(self, interaction: disnake.Interaction):
|
||||
self.settings["rules_title"] = self.title_input.value
|
||||
save_settings(self.guild_id, self.settings)
|
||||
|
||||
|
|
@ -78,12 +77,12 @@ class RulesTitleModal(discord.ui.Modal, title="📜 Titre du Règlement"):
|
|||
return view
|
||||
|
||||
|
||||
class RulesContentModal(discord.ui.Modal, title="📝 Contenu du Règlement"):
|
||||
class RulesContentModal(disnake.ui.Modal, title="📝 Contenu du Règlement"):
|
||||
"""Modal pour configurer le contenu du règlement"""
|
||||
content_input = discord.ui.TextInput(
|
||||
content_input = disnake.ui.TextInput(
|
||||
label="Contenu du règlement",
|
||||
placeholder="Entrez les règles de votre serveur...",
|
||||
style=discord.TextStyle.paragraph,
|
||||
style=disnake.TextStyle.paragraph,
|
||||
min_length=10,
|
||||
max_length=4000,
|
||||
required=True
|
||||
|
|
@ -95,7 +94,7 @@ class RulesContentModal(discord.ui.Modal, title="📝 Contenu du Règlement"):
|
|||
self.settings = settings
|
||||
self.on_update_callback = on_update_callback
|
||||
|
||||
async def on_submit(self, interaction: discord.Interaction):
|
||||
async def on_submit(self, interaction: disnake.Interaction):
|
||||
self.settings["rules_content"] = self.content_input.value
|
||||
save_settings(self.guild_id, self.settings)
|
||||
|
||||
|
|
@ -118,9 +117,9 @@ class RulesContentModal(discord.ui.Modal, title="📝 Contenu du Règlement"):
|
|||
return view
|
||||
|
||||
|
||||
class RulesChannelModal(discord.ui.Modal, title="📌 Salon du Règlement"):
|
||||
class RulesChannelModal(disnake.ui.Modal, title="📌 Salon du Règlement"):
|
||||
"""Modal pour sélectionner le salon du règlement"""
|
||||
channel_input = discord.ui.TextInput(
|
||||
channel_input = disnake.ui.TextInput(
|
||||
label="ID du salon",
|
||||
placeholder="Entrez l'ID du salon où envoyer le règlement",
|
||||
min_length=15,
|
||||
|
|
@ -134,7 +133,7 @@ class RulesChannelModal(discord.ui.Modal, title="📌 Salon du Règlement"):
|
|||
self.settings = settings
|
||||
self.on_update_callback = on_update_callback
|
||||
|
||||
async def on_submit(self, interaction: discord.Interaction):
|
||||
async def on_submit(self, interaction: disnake.Interaction):
|
||||
if not self.channel_input.value.isdigit():
|
||||
return await interaction.response.send_message(
|
||||
"❌ Erreur : ID invalide.",
|
||||
|
|
@ -172,9 +171,9 @@ class RulesChannelModal(discord.ui.Modal, title="📌 Salon du Règlement"):
|
|||
return view
|
||||
|
||||
|
||||
class RulesRoleModal(discord.ui.Modal, title="✅ Rôle d'Acceptation"):
|
||||
class RulesRoleModal(disnake.ui.Modal, title="✅ Rôle d'Acceptation"):
|
||||
"""Modal pour configurer le rôle attribué à l'acceptation"""
|
||||
role_input = discord.ui.TextInput(
|
||||
role_input = disnake.ui.TextInput(
|
||||
label="ID du rôle",
|
||||
placeholder="Entrez l'ID du rôle à attribuer",
|
||||
min_length=15,
|
||||
|
|
@ -188,7 +187,7 @@ class RulesRoleModal(discord.ui.Modal, title="✅ Rôle d'Acceptation"):
|
|||
self.settings = settings
|
||||
self.on_update_callback = on_update_callback
|
||||
|
||||
async def on_submit(self, interaction: discord.Interaction):
|
||||
async def on_submit(self, interaction: disnake.Interaction):
|
||||
if not self.role_input.value.isdigit():
|
||||
return await interaction.response.send_message(
|
||||
"❌ Erreur : ID invalide.",
|
||||
|
|
@ -226,9 +225,9 @@ class RulesRoleModal(discord.ui.Modal, title="✅ Rôle d'Acceptation"):
|
|||
return view
|
||||
|
||||
|
||||
class RulesMessageTypeModal(discord.ui.Modal, title="📝 Type de Message"):
|
||||
class RulesMessageTypeModal(disnake.ui.Modal, title="📝 Type de Message"):
|
||||
"""Modal pour choisir le type de message du règlement"""
|
||||
message_type = discord.ui.TextInput(
|
||||
message_type = disnake.ui.TextInput(
|
||||
label="Type de message",
|
||||
placeholder="Tapez 'embed' pour embed ou 'simple' pour message simple",
|
||||
min_length=5,
|
||||
|
|
@ -242,7 +241,7 @@ class RulesMessageTypeModal(discord.ui.Modal, title="📝 Type de Message"):
|
|||
self.settings = settings
|
||||
self.on_update_callback = on_update_callback
|
||||
|
||||
async def on_submit(self, interaction: discord.Interaction):
|
||||
async def on_submit(self, interaction: disnake.Interaction):
|
||||
msg_type = self.message_type.value.lower().strip()
|
||||
|
||||
if msg_type not in ["embed", "simple"]:
|
||||
|
|
@ -274,11 +273,11 @@ class RulesMessageTypeModal(discord.ui.Modal, title="📝 Type de Message"):
|
|||
return view
|
||||
|
||||
|
||||
class ToggleRulesButton(discord.ui.Button):
|
||||
class ToggleRulesButton(disnake.ui.Button):
|
||||
"""Bouton de bascule pour activer/désactiver le règlement"""
|
||||
|
||||
def __init__(self, is_enabled: bool):
|
||||
style = discord.ButtonStyle.green if is_enabled else discord.ButtonStyle.red
|
||||
style = disnake.ButtonStyle.green if is_enabled else disnake.ButtonStyle.red
|
||||
status = "✅" if is_enabled else "❌"
|
||||
super().__init__(
|
||||
label=f"Règlement [{status}]",
|
||||
|
|
@ -287,7 +286,7 @@ class ToggleRulesButton(discord.ui.Button):
|
|||
emoji="📜"
|
||||
)
|
||||
|
||||
async def callback(self, interaction: discord.Interaction):
|
||||
async def callback(self, interaction: disnake.Interaction):
|
||||
view = self.view
|
||||
settings = view.settings
|
||||
guild = interaction.guild
|
||||
|
|
@ -316,7 +315,7 @@ class ToggleRulesButton(discord.ui.Button):
|
|||
await interaction.response.edit_message(embed=embed, view=new_view)
|
||||
|
||||
|
||||
class RulesAcceptButton(discord.ui.View):
|
||||
class RulesAcceptButton(disnake.ui.View):
|
||||
"""Bouton persistant pour accepter le règlement"""
|
||||
|
||||
def __init__(self, guild_id: int, accept_role_id: int):
|
||||
|
|
@ -327,10 +326,10 @@ class RulesAcceptButton(discord.ui.View):
|
|||
@discord.ui.button(
|
||||
label="J'accepte le règlement",
|
||||
emoji="✅",
|
||||
style=discord.ButtonStyle.green,
|
||||
style=disnake.ButtonStyle.green,
|
||||
custom_id="rules_accept_button"
|
||||
)
|
||||
async def accept_rules(self, interaction: discord.Interaction, button: discord.ui.Button):
|
||||
async def accept_rules(self, interaction: disnake.Interaction, button: disnake.ui.Button):
|
||||
"""Gère le clic sur le bouton d'acceptation"""
|
||||
guild = interaction.guild
|
||||
|
||||
|
|
@ -368,7 +367,7 @@ class RulesAcceptButton(discord.ui.View):
|
|||
f"Le rôle **{role.name}** vous a été attribué.",
|
||||
ephemeral=True
|
||||
)
|
||||
except discord.Forbidden:
|
||||
except disnake.Forbidden:
|
||||
await interaction.response.send_message(
|
||||
"❌ Je n'ai pas les permissions pour attribuer ce rôle.",
|
||||
ephemeral=True
|
||||
|
|
@ -421,7 +420,7 @@ class RulesCog(commands.Cog):
|
|||
"""Appelé quand le bot est prêt"""
|
||||
print("🎫 Module Règles chargé avec succès!")
|
||||
|
||||
async def send_rules_message(self, channel: discord.TextChannel, settings: dict) -> Optional[discord.Message]:
|
||||
async def send_rules_message(self, channel: disnake.TextChannel, settings: dict) -> Optional[disnake.Message]:
|
||||
"""Envoie le message du règlement dans un salon"""
|
||||
title = settings.get("rules_title", "📜 Règlement du Serveur")
|
||||
content = settings.get("rules_content", "")
|
||||
|
|
@ -457,7 +456,7 @@ class RulesCog(commands.Cog):
|
|||
|
||||
else: # embed
|
||||
# Créer l'embed
|
||||
embed = discord.Embed(
|
||||
embed = disnake.Embed(
|
||||
title=title,
|
||||
description=content,
|
||||
color=0x2b2d31
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue