Voice et bot modif

This commit is contained in:
pi 2026-06-16 17:09:34 +00:00
parent 189d56026b
commit 7333a22bcd
10774 changed files with 634644 additions and 933308 deletions

View file

@ -10,9 +10,22 @@ async def execute(bot, params, message):
for assignment in role_assignments:
target_mention = assignment.get('target_user_mention')
role_name = assignment.get('role_name')
role = discord.utils.find(lambda r: r.name.casefold() == role_name.casefold(), message.guild.roles)
# Try by role_id first if available
role = None
role_id = assignment.get('role_id')
if role_id:
try:
role = message.guild.get_role(int(role_id))
except (ValueError, TypeError):
pass
if not role and role_name:
role = discord.utils.find(lambda r: r.name.casefold() == role_name.casefold(), message.guild.roles)
if not role:
await message.channel.send(f"Rôle '{role_name}' introuvable.")
label = role_name or assignment.get('role_id', 'inconnu')
await message.channel.send(f"Rôle '{label}' introuvable.")
continue
# Check for bulk assignment

View file

@ -9,6 +9,9 @@ async def execute(bot, params, message):
created_count = 0
for role_params in roles:
role_name = role_params.get('role_name')
if not role_name:
await message.channel.send("Nom de rôle requis pour la création.")
continue
color = role_params.get('color', '#ffffff')
permissions_str = role_params.get('permissions', '')
# Parse color

View file

@ -1,5 +1,22 @@
import discord
async def _find_role(guild, role_params):
"""Find a role by ID first, then by name (case-insensitive)."""
role_id = role_params.get('role_id')
if role_id:
try:
r = guild.get_role(int(role_id))
if r:
return r
except (ValueError, TypeError):
pass
role_name = role_params.get('role_name')
if not role_name:
return None
return discord.utils.find(lambda r: r.name.casefold() == role_name.casefold(), guild.roles)
async def execute(bot, params, message):
roles = params.get('roles', [])
if not roles:
@ -10,14 +27,17 @@ async def execute(bot, params, message):
for role_params in roles:
role_name = role_params.get('role_name')
position = role_params.get('position')
role = discord.utils.find(lambda r: r.name.casefold() == role_name.casefold(), guild.roles)
role = await _find_role(guild, role_params)
if not role:
await message.channel.send(f"Rôle '{role_name}' introuvable.")
label = role_name or role_params.get('role_id', 'inconnu')
await message.channel.send(f"Rôle '{label}' introuvable.")
continue
try:
await role.edit(position=position)
moved_count += 1
except discord.Forbidden:
await message.channel.send(f"Je n'ai pas les permissions pour déplacer le rôle '{role_name}'.")
label = role_name or role_params.get('role_id', 'inconnu')
await message.channel.send(f"Je n'ai pas les permissions pour déplacer le rôle '{label}'.")
if moved_count > 0:
await message.channel.send(f"{moved_count} rôle(s) déplacé(s).")
await message.channel.send(f"{moved_count} rôle(s) déplacé(s).")

View file

@ -1,5 +1,22 @@
import discord
async def _find_role(guild, role_params):
"""Find a role by ID first, then by name (case-insensitive)."""
role_id = role_params.get('role_id')
if role_id:
try:
r = guild.get_role(int(role_id))
if r:
return r
except (ValueError, TypeError):
pass
role_name = role_params.get('role_name')
if not role_name:
return None
return discord.utils.find(lambda r: r.name.casefold() == role_name.casefold(), guild.roles)
async def execute(bot, params, message):
roles = params.get('roles', [])
if not roles:
@ -10,14 +27,17 @@ async def execute(bot, params, message):
for role_params in roles:
role_name = role_params.get('role_name')
new_name = role_params.get('new_name')
role = discord.utils.find(lambda r: r.name.casefold() == role_name.casefold(), guild.roles)
role = await _find_role(guild, role_params)
if not role:
await message.channel.send(f"Rôle '{role_name}' introuvable.")
label = role_name or role_params.get('role_id', 'inconnu')
await message.channel.send(f"Rôle '{label}' introuvable.")
continue
try:
await role.edit(name=new_name)
modified_count += 1
except discord.Forbidden:
await message.channel.send(f"Je n'ai pas les permissions pour modifier le rôle '{role_name}'.")
label = role_name or role_params.get('role_id', 'inconnu')
await message.channel.send(f"Je n'ai pas les permissions pour modifier le rôle '{label}'.")
if modified_count > 0:
await message.channel.send(f"{modified_count} rôle(s) modifié(s).")
await message.channel.send(f"{modified_count} rôle(s) modifié(s).")

View file

@ -10,13 +10,26 @@ async def execute(bot, params, message):
for removal in role_removals:
target_mention = removal.get('target_user_mention')
role_name = removal.get('role_name')
role = discord.utils.find(lambda r: r.name.casefold() == role_name.casefold(), message.guild.roles)
# Try by role_id first if available
role = None
role_id = removal.get('role_id')
if role_id:
try:
role = message.guild.get_role(int(role_id))
except (ValueError, TypeError):
pass
if not role and role_name:
role = discord.utils.find(lambda r: r.name.casefold() == role_name.casefold(), message.guild.roles)
if not role:
await message.channel.send(f"Rôle '{role_name}' introuvable.")
label = role_name or removal.get('role_id', 'inconnu')
await message.channel.send(f"Rôle '{label}' introuvable.")
continue
# Check for bulk removal
if target_mention.lower() in ['@everyone', 'everyone', 'all', 'tous']:
if target_mention and target_mention.lower() in ['@everyone', 'everyone', 'all', 'tous']:
total_members = 0
removed_count = 0
await message.channel.send(f"Retrait du rôle '{role.name}' de tous les membres... (Cela peut prendre du temps)")
@ -39,6 +52,10 @@ async def execute(bot, params, message):
await message.channel.send(f"Rôle '{role.name}' retiré à {removed_count} membres (bots exclus).")
continue
if not target_mention:
await message.channel.send("Mention utilisateur requise.")
continue
# Single user removal
if target_mention.startswith('<@') and target_mention.endswith('>'):
user_id = int(target_mention[2:-1])
@ -68,4 +85,4 @@ async def execute(bot, params, message):
except discord.Forbidden:
await message.channel.send(f"Je n'ai pas les permissions pour retirer le rôle {role.name} de {member.mention}.")
if removed_count > 0 and not total_members:
await message.channel.send(f"{removed_count} rôle(s) retiré(s).")
await message.channel.send(f"{removed_count} rôle(s) retiré(s).")

View file

@ -1,5 +1,22 @@
import discord
async def _find_role(guild, role_params):
"""Find a role by ID first, then by name (case-insensitive)."""
role_id = role_params.get('role_id')
if role_id:
try:
r = guild.get_role(int(role_id))
if r:
return r
except (ValueError, TypeError):
pass
role_name = role_params.get('role_name')
if not role_name:
return None
return discord.utils.find(lambda r: r.name.casefold() == role_name.casefold(), guild.roles)
async def execute(bot, params, message):
roles = params.get('roles', [])
if not roles:
@ -10,14 +27,17 @@ async def execute(bot, params, message):
for role_params in roles:
role_name = role_params.get('role_name')
new_name = role_params.get('new_name')
role = discord.utils.find(lambda r: r.name.casefold() == role_name.casefold(), guild.roles)
role = await _find_role(guild, role_params)
if not role:
await message.channel.send(f"Rôle '{role_name}' introuvable.")
label = role_name or role_params.get('role_id', 'inconnu')
await message.channel.send(f"Rôle '{label}' introuvable.")
continue
try:
await role.edit(name=new_name)
renamed_count += 1
except discord.Forbidden:
await message.channel.send(f"Je n'ai pas les permissions pour renommer le rôle '{role_name}'.")
label = role_name or role_params.get('role_id', 'inconnu')
await message.channel.send(f"Je n'ai pas les permissions pour renommer le rôle '{label}'.")
if renamed_count > 0:
await message.channel.send(f"{renamed_count} rôle(s) renommé(s).")
await message.channel.send(f"{renamed_count} rôle(s) renommé(s).")

View file

@ -1,5 +1,22 @@
import discord
async def _find_role(guild, role_params):
"""Find a role by ID first, then by name (case-insensitive)."""
role_id = role_params.get('role_id')
if role_id:
try:
r = guild.get_role(int(role_id))
if r:
return r
except (ValueError, TypeError):
pass
role_name = role_params.get('role_name')
if not role_name:
return None
return discord.utils.find(lambda r: r.name.casefold() == role_name.casefold(), guild.roles)
async def execute(bot, params, message):
roles = params.get('roles', [])
if not roles:
@ -9,14 +26,17 @@ async def execute(bot, params, message):
deleted_count = 0
for role_params in roles:
role_name = role_params.get('role_name')
role = discord.utils.find(lambda r: r.name.casefold() == role_name.casefold(), guild.roles)
role = await _find_role(guild, role_params)
if not role:
await message.channel.send(f"Rôle '{role_name}' introuvable.")
label = role_name or role_params.get('role_id', 'inconnu')
await message.channel.send(f"Rôle '{label}' introuvable.")
continue
try:
await role.delete(reason="Supprimé par le Superviseur")
deleted_count += 1
except discord.Forbidden:
await message.channel.send(f"Je n'ai pas les permissions pour supprimer le rôle '{role_name}'.")
label = role_name or role_params.get('role_id', 'inconnu')
await message.channel.send(f"Je n'ai pas les permissions pour supprimer le rôle '{label}'.")
if deleted_count > 0:
await message.channel.send(f"{deleted_count} rôle(s) supprimé(s).")
await message.channel.send(f"{deleted_count} rôle(s) supprimé(s).")