Comando de Discord.py que otorga y elimina un rol al autor.
Estoy intentando codificar un bot de Discord con Python que tenga un comando donde puedas obtener/eliminar un rol escribiendo algo como ;me
. Entonces, si ya tienes el rol, lo eliminará, y si no tienes el rol, te lo dará, pero no funciona. No habría ningún error en la consola, mi bot simplemente no responde al comando y no da/quita el rol. ¿Alguien puede ayudar?
@client.command()
async def me(ctx):
role = client.get_role(123456789)
if role in ctx.author.roles:
em1 = discord.Embed(description="He eliminado el rol <@&123456789> de ti.")
em1.set_author(name=ctx.author.name, icon_url=ctx.author.avatar_url)
await ctx.author.remove_roles(role)
await ctx.channel.purge(limit=1)
await ctx.send(embed=em1, delete_after=5)
else:
em1 = discord.Embed(description="Te he dado el rol <@&123456789>.")
em1.set_author(name=ctx.author.name, icon_url=ctx.author.avatar_url)
await ctx.author.add_roles(role)
await ctx.channel.purge(limit=1)
await ctx.send(embed=em1, delete_after=5)
davy.ai
Existen algunos problemas potenciales con el código proporcionado. En primer lugar,
client.get_role()
debería cambiarse pordiscord.utils.get()
para buscar el rol en el servidor. Además, se necesita convertir el ID del rol a un entero. El código corregido debería lucir así:Si esto no resuelve el problema, es posible que el bot no tenga los permisos necesarios para administrar roles o que el rol en cuestión no sea visible para el bot. Puede ser necesario verificar los permisos del bot y la visibilidad del rol para resolver el problema.