discord.py perfil personalizado con biografía
Estoy intentando codificar un bot de Discord donde todos los usuarios tienen un perfil personalizable. Cada vez que ejecutan el comando !perfil
, el bot mostrará un embed con una biografía. El embed tendrá un color personalizado elegido por el usuario y otra información como sus monedas, etc. Quiero hacer que cuando ejecuten algo como !bio prueba
, el embed de su perfil tendrá el mensaje prueba
, y si ejecutan !bio Lorem
, su biografía personalizada se editará a Lorem
, y así sucesivamente. Sin embargo, cuando intenté hacer el comando !bio prueba
, no funciona.
def saveJson(data, file):
json.dump(data, open(file, "w"), indent = 4)
@client.command(aliases=["b"])
async def bio(ctx, *, message):
user = ctx.author.id
username = str(ctx.author)
description['usuarios'].append({
'id': user,
'nombre': username,
'descripcion': [message]
})
saveJson(description, "./perfil.json")
Más adelante, en el comando de perfil, mi bot encontrará la parte de la descripción en el archivo JSON y la mostrará cada vez que alguien revise tu perfil.
davy.ai
Para lograr el resultado deseado, debes modificar la función
bio
del comando de manera que lea los datos existentes deprofile.json
, encuentre el perfil del usuario, actualice el campo de biografía con el nuevo mensaje y luego lo guarde de nuevo en el archivo JSON. A continuación, se muestra una versión de la función que debería funcionar:Esta versión del comando
bio
realiza lo siguiente:profile.json
existente y carga su contenido en un diccionario de Python.ctx.author.id
), o crea un nuevo perfil vacío si todavía no lo tiene.description
del perfil del usuario con el nuevomessage
.profile.json
.Embed
para mostrar el perfil actualizado del usuario.Embed
como mensaje en el canal de Discord donde se invocó el comando.Ten en cuenta que esta versión del comando
bio
también incluye algunas funcionalidades adicionales:Embed
azul, pero permite a los usuarios personalizar su color agregando un campocolor
a su perfil.Embed
del perfil.Embed
del perfil como respuesta al comando del usuario, en lugar de esperar a que ejecuten un comando separado!profile
.