es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Error de atributo: el objeto ‘Usuario’ no tiene el atributo ‘joined_at’ [discord.py]

Estoy usando este código para obtener la fecha en que un usuario se unió al servidor:

if answers['member_older'] != None:
  for i in range (len(id)):
    x = id[i]
    account_memb = client.get_user(x)
    print(account_memb)
    joined = account_memb.joined_at
    new_date_memb = datetime.today() - joined
    member_old = new_date_memb.days
    if member_old < answers["member_older"]:
      users.pop(users.index(account_memb))
      print(users)

Sin embargo, por alguna razón, está mostrando un error de atributo:

La excepción de la tarea nunca se recuperó:
futuro: <tarea terminada="" nombre='Task-56' coro=""></tarea><locals>>.start() done, definido en d:\Giveaway Bot\main.py:412> excepción=AttributeError("'User' object has no attribute 'joined_at'")
Traceback (la mayoría de las últimas llamadas):
  Archivo & quot; d:\Giveaway Bot\main.py & quot;, línea 477, en start
    joined = account_memb.joined_at
AttributeError: 'User' object has no attribute 'joined_at'

Estoy usando un código similar para obtener la fecha en que se creó la cuenta del usuario, y está funcionando perfectamente:

py
if answers['acc_older'] != None:
for i in range (len(id)):
n = id[i]
account = client.get_user(n)
created_at = account.created_at
new_date = datetime.today() - created_at
old_days = new_date.days
if old_days < answers['acc_older']:
users.pop(users.index(account))
print(users)

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El mensaje de error indica que el objeto ‘User’ no tiene el atributo ‘joined_at’, lo que significa que el atributo ‘joined_at’ no está disponible para una cuenta de usuario normal.

    El atributo ‘joined_at’ solo está disponible para los miembros de un servidor, lo que significa que para obtener la fecha en que un usuario se unió a un servidor, necesitamos tener acceso al objeto miembro, no solo al objeto usuario.

    Para acceder al objeto miembro, necesitamos usar el atributo ‘guild’ del cliente y luego usar el método ‘get_member’ para obtener el objeto miembro. Aquí hay un ejemplo de código que puede usar para obtener la fecha en que un usuario se unió a un servidor:

    if answers['member_older'] != None:
        for i in range(len(id)):
            x = id[i]
            guild = client.get_guild(ID_DEL_SERVIDOR) # reemplace ID_DEL_SERVIDOR con el ID del servidor
            member = guild.get_member(x)
            joined = member.joined_at
            new_date_memb = datetime.today() - joined
            member_old = new_date_memb.days
            if member_old < answers["member_older"]:
                users.pop(users.index(member))
                print(users)
    

    Tenga en cuenta que debe reemplazar ID_DEL_SERVIDOR con el ID real de su servidor, y asegurarse de que el bot tenga acceso al servidor para poder obtener el objeto miembro.

Comments are closed.