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.

Discord.py, comprobar en MongoDB si el usuario ya está presente.

Hola, estoy creando un comando que registra al usuario por su ID de Discord en MongoDB. Ahora quiero agregar una condición: si el usuario ya está registrado, el bot debe devolver que ya estás registrado.

Intenté hacer esto:

@commands.command()
async def register(self, ctx):
  mongo_url = ""
  cluster = MongoClient(
    mongo_url
  )
  db = cluster["DNFT-registered-users(DISCORDBOT)"]
  collection = db["registered"]
  register = {
    "User": ctx.author.id,
  }
  if ctx.author.id in collection:
    return await ctx.send("Ya estás registrado")
  else:
    collection.insert_one(register)
    return await ctx.send("Funcionó")
Tags:  , ,

Answer

  1. Avatar for davy.ai

    El problema con el código proporcionado es que ctx.author.id está siendo comparado con el objeto completo collection.

    Para comprobar si un usuario ya está registrado, se necesita hacer una consulta para verificar si el valor ctx.author.id ya existe en la colección.

    El código corregido se vería algo así:

        @commands.command()
        async def register(self, ctx):
          mongo_url = ""
          cluster = MongoClient(mongo_url)
          db = cluster["DNFT-registered-users(DISCORDBOT)"]
          collection = db["registered"]
          registered_user = collection.find_one({"User": ctx.author.id})
          if registered_user:
            return await ctx.send("Ya estás registrado.")
          else:
            register = {"User": ctx.author.id}
            collection.insert_one(register)
            return await ctx.send("Te has registrado.")
    

    Este código busca un documento en la colección registered donde el campo User coincida con ctx.author.id. Si registered_user existe (es decir, el usuario ya ha sido registrado), entonces la función devuelve el mensaje “Ya estás registrado.”. De lo contrario, se inserta un nuevo documento en la colección y se devuelve un mensaje de éxito.

Comments are closed.