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: # Fallback for single role roles = [params] guild = message.guild renamed_count = 0 for role_params in roles: role_name = role_params.get('role_name') new_name = role_params.get('new_name') role = await _find_role(guild, role_params) if not role: 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: 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).")