Beta/commandes/roles/modifier.py

43 lines
1.5 KiB
Python
Raw Normal View History

2026-02-06 22:23:20 +01:00
import discord
2026-06-16 17:09:34 +00:00
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)
2026-02-06 22:23:20 +01:00
async def execute(bot, params, message):
roles = params.get('roles', [])
if not roles:
# Fallback for single role
roles = [params]
guild = message.guild
modified_count = 0
for role_params in roles:
role_name = role_params.get('role_name')
new_name = role_params.get('new_name')
2026-06-16 17:09:34 +00:00
role = await _find_role(guild, role_params)
2026-02-06 22:23:20 +01:00
if not role:
2026-06-16 17:09:34 +00:00
label = role_name or role_params.get('role_id', 'inconnu')
await message.channel.send(f"Rôle '{label}' introuvable.")
2026-02-06 22:23:20 +01:00
continue
try:
await role.edit(name=new_name)
modified_count += 1
except discord.Forbidden:
2026-06-16 17:09:34 +00:00
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}'.")
2026-02-06 22:23:20 +01:00
if modified_count > 0:
2026-06-16 17:09:34 +00:00
await message.channel.send(f"{modified_count} rôle(s) modifié(s).")