Fix retrait DB migration + emojis panel
- db.py: Ajout migration ALTER TABLE pour colonne client_negative_floor (correction du bug 'no such column' sur les bases existantes) - panel.py: Tous les boutons du panel avec emojis - panel.py: Correction TextSelect -> TextDisplay (panel crash)
This commit is contained in:
parent
c37a2a0ff9
commit
ae451fe894
2 changed files with 48 additions and 38 deletions
|
|
@ -37,14 +37,14 @@ def _uid(seed: str) -> str:
|
|||
return hashlib.md5(seed.encode()).hexdigest()[:12]
|
||||
|
||||
|
||||
def _btn(label, style, cid, cb):
|
||||
b = discord.ui.Button(label=label, style=style, custom_id=cid)
|
||||
def _btn(label, style, cid, cb, emoji=None):
|
||||
b = discord.ui.Button(label=label, style=style, custom_id=cid, emoji=emoji)
|
||||
b.callback = cb
|
||||
return b
|
||||
|
||||
|
||||
def _back_btn(cid, cb):
|
||||
return _btn("◀ Retour", discord.ButtonStyle.secondary, cid, cb)
|
||||
return _btn("Retour", discord.ButtonStyle.secondary, cid, cb, emoji="◀️")
|
||||
|
||||
|
||||
async def _get_user_bank(guild, user) -> dict:
|
||||
|
|
@ -572,13 +572,13 @@ class CompteDetailView(discord.ui.LayoutView):
|
|||
items.extend([
|
||||
discord.ui.Separator(),
|
||||
discord.ui.ActionRow(
|
||||
_btn("Carte", discord.ButtonStyle.primary, f"cd_card_{safe}", self._card),
|
||||
_btn("Releve", discord.ButtonStyle.primary, f"cd_stmt_{safe}", self._statement),
|
||||
_btn("Virement", discord.ButtonStyle.primary, f"cd_vir_{safe}", self._vir),
|
||||
_btn("Carte", discord.ButtonStyle.primary, f"cd_card_{safe}", self._card, emoji="💳"),
|
||||
_btn("Relevé", discord.ButtonStyle.primary, f"cd_stmt_{safe}", self._statement, emoji="📄"),
|
||||
_btn("Virement", discord.ButtonStyle.primary, f"cd_vir_{safe}", self._vir, emoji="💸"),
|
||||
),
|
||||
discord.ui.ActionRow(
|
||||
_btn("+ Depot", discord.ButtonStyle.success, f"cd_dep_{safe}", self._depot),
|
||||
_btn("- Retrait", discord.ButtonStyle.danger, f"cd_ret_{safe}", self._retrait),
|
||||
_btn("Dépôt", discord.ButtonStyle.success, f"cd_dep_{safe}", self._depot, emoji="💰"),
|
||||
_btn("Retrait", discord.ButtonStyle.danger, f"cd_ret_{safe}", self._retrait, emoji="🏧"),
|
||||
),
|
||||
discord.ui.Separator(),
|
||||
discord.ui.ActionRow(_back_btn("back_cd", self._back)),
|
||||
|
|
@ -662,7 +662,7 @@ class ComptePanelView(discord.ui.LayoutView):
|
|||
solde_str = f"{c['solde']:,.2f} EUR".replace(",", " ")
|
||||
label = f"{c['bank_name']} — {c['account_type'].title()} — {solde_str}"
|
||||
safe = _uid(c["rib"])
|
||||
btn = _btn(label[:80], discord.ButtonStyle.primary, f"cp_acc_{safe}", self._make_acc_cb(c))
|
||||
btn = _btn(label[:80], discord.ButtonStyle.primary, f"cp_acc_{safe}", self._make_acc_cb(c), emoji="💰")
|
||||
items.append(discord.ui.ActionRow(btn))
|
||||
|
||||
items.extend([
|
||||
|
|
@ -706,16 +706,16 @@ class BanquierPanelView(discord.ui.LayoutView):
|
|||
),
|
||||
discord.ui.Separator(),
|
||||
discord.ui.ActionRow(
|
||||
_btn("Ouvrir Compte", discord.ButtonStyle.success, _uid("bq_open_" + str(author.id)), self._ouvrir),
|
||||
_btn("Consulter Clients", discord.ButtonStyle.secondary, _uid("bq_clients_" + str(author.id)), self._clients),
|
||||
_btn("Ouvrir Compte", discord.ButtonStyle.success, _uid("bq_open_" + str(author.id)), self._ouvrir, emoji="➕"),
|
||||
_btn("Consulter Clients", discord.ButtonStyle.secondary, _uid("bq_clients_" + str(author.id)), self._clients, emoji="👥"),
|
||||
),
|
||||
discord.ui.ActionRow(
|
||||
_btn("Info Banque", discord.ButtonStyle.secondary, _uid("bq_info_" + str(author.id)), self._info),
|
||||
_btn("Transactions", discord.ButtonStyle.secondary, _uid("bq_tx_" + str(author.id)), self._tx),
|
||||
_btn("Info Banque", discord.ButtonStyle.secondary, _uid("bq_info_" + str(author.id)), self._info, emoji="ℹ️"),
|
||||
_btn("Transactions", discord.ButtonStyle.secondary, _uid("bq_tx_" + str(author.id)), self._tx, emoji="📊"),
|
||||
),
|
||||
discord.ui.ActionRow(
|
||||
_btn("Set Plafond", discord.ButtonStyle.primary, _uid("bq_plaf_" + str(author.id)), self._plafond),
|
||||
_btn("Set Reserve", discord.ButtonStyle.primary, _uid("bq_res_" + str(author.id)), self._reserve),
|
||||
_btn("Set Plafond", discord.ButtonStyle.primary, _uid("bq_plaf_" + str(author.id)), self._plafond, emoji="📉"),
|
||||
_btn("Set Reserve", discord.ButtonStyle.primary, _uid("bq_res_" + str(author.id)), self._reserve, emoji="🏦"),
|
||||
),
|
||||
discord.ui.Separator(),
|
||||
discord.ui.ActionRow(_back_btn("back_bp", self._back)),
|
||||
|
|
@ -838,16 +838,16 @@ class GouvernementPanelView(discord.ui.LayoutView):
|
|||
discord.ui.TextDisplay("Institutions, fisc, banques."),
|
||||
discord.ui.Separator(),
|
||||
discord.ui.ActionRow(
|
||||
_btn("Creer Banque", discord.ButtonStyle.success, "gp_cbanque", self._cbanque),
|
||||
_btn("Creer Institution", discord.ButtonStyle.success, "gp_cinst", self._cinst),
|
||||
_btn("Créer Banque", discord.ButtonStyle.success, "gp_cbanque", self._cbanque, emoji="🏦"),
|
||||
_btn("Créer Institution", discord.ButtonStyle.success, "gp_cinst", self._cinst, emoji="🏛️"),
|
||||
),
|
||||
discord.ui.ActionRow(
|
||||
_btn("Config Fisc", discord.ButtonStyle.primary, "gp_fisc", self._fisc),
|
||||
_btn("Virement Fisc", discord.ButtonStyle.primary, "gp_vfisc", self._vfisc),
|
||||
_btn("Config Fisc", discord.ButtonStyle.primary, "gp_fisc", self._fisc, emoji="📋"),
|
||||
_btn("Virement Fisc", discord.ButtonStyle.primary, "gp_vfisc", self._vfisc, emoji="💸"),
|
||||
),
|
||||
discord.ui.ActionRow(
|
||||
_btn("Lister Banques", discord.ButtonStyle.secondary, "gp_lbanques", self._lbanques),
|
||||
_btn("Lister Institutions", discord.ButtonStyle.secondary, "gp_linst", self._linst),
|
||||
_btn("Lister Banques", discord.ButtonStyle.secondary, "gp_lbanques", self._lbanques, emoji="📃"),
|
||||
_btn("Lister Institutions", discord.ButtonStyle.secondary, "gp_linst", self._linst, emoji="📃"),
|
||||
),
|
||||
discord.ui.Separator(),
|
||||
discord.ui.ActionRow(_back_btn("back_gp", self._back)),
|
||||
|
|
@ -943,20 +943,20 @@ class IdentitePanelView(discord.ui.LayoutView):
|
|||
discord.ui.TextDisplay("Cartes d'identite, permis, visites medicales."),
|
||||
discord.ui.Separator(),
|
||||
discord.ui.ActionRow(
|
||||
_btn("Ma Carte", discord.ButtonStyle.primary, "ip_carte", self._carte),
|
||||
_btn("Ma Carte", discord.ButtonStyle.primary, "ip_carte", self._carte, emoji="🪪"),
|
||||
),
|
||||
]
|
||||
|
||||
if has_role(author, "gouvernement"):
|
||||
items.append(discord.ui.ActionRow(
|
||||
_btn("Creer Carte", discord.ButtonStyle.success, "ip_ccar", self._ccar),
|
||||
_btn("Créer Carte", discord.ButtonStyle.success, "ip_ccar", self._ccar, emoji="🪪"),
|
||||
))
|
||||
|
||||
action_items = []
|
||||
if has_role(author, "auto_ecole"):
|
||||
action_items.append(_btn("Permis", discord.ButtonStyle.primary, "ip_permis", self._permis))
|
||||
action_items.append(_btn("Permis", discord.ButtonStyle.primary, "ip_permis", self._permis, emoji="🚗"))
|
||||
if has_role(author, "ems"):
|
||||
action_items.append(_btn("Visite Medicale", discord.ButtonStyle.primary, "ip_vismed", self._vismed))
|
||||
action_items.append(_btn("Visite Médicale", discord.ButtonStyle.primary, "ip_vismed", self._vismed, emoji="🏥"))
|
||||
if action_items:
|
||||
items.append(discord.ui.ActionRow(*action_items))
|
||||
|
||||
|
|
@ -1014,9 +1014,9 @@ class TicketsPanelView(discord.ui.LayoutView):
|
|||
discord.ui.TextDisplay("Gestion des tickets et messages prives."),
|
||||
discord.ui.Separator(),
|
||||
discord.ui.ActionRow(
|
||||
_btn("Embed Ticket", discord.ButtonStyle.success, "tp_ticket", self._ticket),
|
||||
_btn("Envoyer MP", discord.ButtonStyle.primary, "tp_mp", self._mp),
|
||||
_btn("MP a Tous", discord.ButtonStyle.danger, "tp_mptous", self._mptous),
|
||||
_btn("Embed Ticket", discord.ButtonStyle.success, "tp_ticket", self._ticket, emoji="📩"),
|
||||
_btn("Envoyer MP", discord.ButtonStyle.primary, "tp_mp", self._mp, emoji="✉️"),
|
||||
_btn("MP à Tous", discord.ButtonStyle.danger, "tp_mptous", self._mptous, emoji="📢"),
|
||||
),
|
||||
discord.ui.Separator(),
|
||||
discord.ui.ActionRow(_back_btn("back_tp", self._back)),
|
||||
|
|
@ -1062,8 +1062,8 @@ class SessionsPanelView(discord.ui.LayoutView):
|
|||
discord.ui.TextDisplay("Annonces de sessions et gestion des presences."),
|
||||
discord.ui.Separator(),
|
||||
discord.ui.ActionRow(
|
||||
_btn("Annoncer Session", discord.ButtonStyle.success, "sp_annonce", self._annonce),
|
||||
_btn("Liste Presences", discord.ButtonStyle.primary, "sp_liste", self._liste),
|
||||
_btn("Annoncer Session", discord.ButtonStyle.success, "sp_annonce", self._annonce, emoji="📅"),
|
||||
_btn("Liste Présences", discord.ButtonStyle.primary, "sp_liste", self._liste, emoji="✅"),
|
||||
),
|
||||
discord.ui.Separator(),
|
||||
discord.ui.ActionRow(_back_btn("back_sp", self._back)),
|
||||
|
|
@ -1096,13 +1096,13 @@ class ConfigPanelView(discord.ui.LayoutView):
|
|||
discord.ui.TextDisplay("Configurer les roles, salons et categories."),
|
||||
discord.ui.Separator(),
|
||||
discord.ui.ActionRow(
|
||||
_btn("Definir Role", discord.ButtonStyle.primary, "cfg_role", self._crole),
|
||||
_btn("Definir Salon", discord.ButtonStyle.primary, "cfg_chan", self._cchan),
|
||||
_btn("Definir Categorie", discord.ButtonStyle.primary, "cfg_cat", self._ccat),
|
||||
_btn("Définir Rôle", discord.ButtonStyle.primary, "cfg_role", self._crole, emoji="🎭"),
|
||||
_btn("Définir Salon", discord.ButtonStyle.primary, "cfg_chan", self._cchan, emoji="💬"),
|
||||
_btn("Définir Catégorie", discord.ButtonStyle.primary, "cfg_cat", self._ccat, emoji="📂"),
|
||||
),
|
||||
discord.ui.ActionRow(
|
||||
_btn("Voir Config", discord.ButtonStyle.secondary, "cfg_voir", self._cvoir),
|
||||
_btn("Reset Config", discord.ButtonStyle.danger, "cfg_reset", self._creset),
|
||||
_btn("Voir Config", discord.ButtonStyle.secondary, "cfg_voir", self._cvoir, emoji="👁️"),
|
||||
_btn("Reset Config", discord.ButtonStyle.danger, "cfg_reset", self._creset, emoji="🗑️"),
|
||||
),
|
||||
discord.ui.Separator(),
|
||||
discord.ui.ActionRow(_back_btn("back_cfg", self._back)),
|
||||
|
|
@ -1180,13 +1180,13 @@ class DiversPanelView(discord.ui.LayoutView):
|
|||
discord.ui.TextDisplay("Lancer de de et autres outils."),
|
||||
discord.ui.Separator(),
|
||||
discord.ui.ActionRow(
|
||||
_btn("Lancer un De", discord.ButtonStyle.primary, "dp_roll", self._roll),
|
||||
_btn("Lancer un Dé", discord.ButtonStyle.primary, "dp_roll", self._roll, emoji="🎲"),
|
||||
),
|
||||
]
|
||||
|
||||
if author.guild_permissions.administrator:
|
||||
items.append(discord.ui.ActionRow(
|
||||
_btn("Stats Bot", discord.ButtonStyle.secondary, "dp_stats", self._stats),
|
||||
_btn("Stats Bot", discord.ButtonStyle.secondary, "dp_stats", self._stats, emoji="📊"),
|
||||
))
|
||||
|
||||
items.extend([
|
||||
|
|
@ -1281,7 +1281,7 @@ class MainPanelView(discord.ui.LayoutView):
|
|||
self.add_item(discord.ui.Container(
|
||||
discord.ui.TextDisplay(f"## {guild_name} — Panel de Commandes"),
|
||||
discord.ui.TextDisplay(f"**Vos roles :** {role_text}"),
|
||||
discord.ui.TextSelect("Selectionnez une categorie ci-dessous."),
|
||||
discord.ui.TextDisplay("Selectionnez une catégorie ci-dessous."),
|
||||
discord.ui.Separator(),
|
||||
discord.ui.ActionRow(CategorySelect(author, bot)),
|
||||
accent_colour=discord.Colour(C_MAIN),
|
||||
|
|
|
|||
10
utils/db.py
10
utils/db.py
|
|
@ -72,6 +72,11 @@ CREATE INDEX IF NOT EXISTS idx_institutions_guild ON institutions(guild_id);
|
|||
"""
|
||||
|
||||
|
||||
MIGRATIONS = [
|
||||
"ALTER TABLE banks ADD COLUMN client_negative_floor REAL DEFAULT 0.0",
|
||||
]
|
||||
|
||||
|
||||
async def get_db() -> aiosqlite.Connection:
|
||||
os.makedirs(os.path.dirname(DB_PATH), exist_ok=True)
|
||||
db = await aiosqlite.connect(DB_PATH)
|
||||
|
|
@ -79,5 +84,10 @@ async def get_db() -> aiosqlite.Connection:
|
|||
await db.execute("PRAGMA journal_mode=WAL")
|
||||
await db.execute("PRAGMA foreign_keys=ON")
|
||||
await db.executescript(SCHEMA)
|
||||
for migration in MIGRATIONS:
|
||||
try:
|
||||
await db.execute(migration)
|
||||
except Exception:
|
||||
pass
|
||||
await db.commit()
|
||||
return db
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue