Tengo un bot de discordia para tratar con las notas de los usuarios. Entonces, el bot básicamente almacena una cadena como una nota en una lista dentro de la base de datos. Las notas son específicas del usuario. Intenté configurar ctx.author.id como el valor para el campo "_id" y luego verificar si la identificación de usuario de la persona que usa el comando es igual al valor de "_id" en cualquier documento en la base de datos. Pero no funciona.
Aquí está mi código para el comando:
@client.command() async def makenotes(ctx, *, args): try: if (len(db.NoteBoyNotes.find_one({'_id':ctx.author.id})) == 0): NotesUpdateDict = {'_id':ctx.author.id, 'notes':[]} NotesUpdateDict['notes'].append(args) NBNotes.update(NotesUpdateDict) x = notesCol.insert_one(NBNotes) await ctx.send("Ok, Noted") else: pass except: await ctx.send("Some error occurred") ¿Alguien puede ayudar con esto? Otra cosa, estoy usando motor para asyncio , no para pymongo .
EDITAR: Aquí está el error: ingrese la descripción de la imagen aquí
Esta respuesta es de un comentario publicado por @kpie,
@client.command() async def makenotes(ctx, *, args): try: check = await db.NoteBoyNotes.find_one({'_id':ctx.author.id}) if (check is None): NotesUpdateDict = {'_id':ctx.author.id, 'notes':[]} NotesUpdateDict['notes'].append(args) NBNotes.update(NotesUpdateDict) x = notesCol.insert_one(NBNotes) await ctx.send("Ok, Noted") else: pass except: await ctx.send("Some error occurred")```Prueba esto:
@client.command() async def makenotes(ctx, *, args): try: check = awaut db.NoteBoyNotes.find_one({'_id':ctx.author.id}) if (len(check) == 0): NotesUpdateDict = {'_id':ctx.author.id, 'notes':[]} NotesUpdateDict['notes'].append(args) NBNotes.update(NotesUpdateDict) x = notesCol.insert_one(NBNotes) await ctx.send("Ok, Noted") else: pass except: await ctx.send("Some error occurred")await db.NoteBoyNotes.find_one para obtener el valor devuelto en lugar del futuro.
También creo que encontrar uno Devuelve un solo documento, o Ninguno si no se encuentra ningún documento coincidente. entonces verifica si check es None en lugar de len().