python - discordia,>, no compatible entre instancias de, Context y, int,

CorePress2024-01-25  9

Cuando intento ejecutar el comando siempre aparece este mensaje de error: "TypeError: '>' no es compatible entre instancias de 'Context' e 'int'"

from discord.ext import commands

class clear(commands.Cog):

    def __init__(self, client):
        self.client = client

# Events

    @commands.Cog.listener()
    async def on_ready(self):
        print('Clear modul started')

# Command

    @commands.command()
    async def clear(ctx, amount=5, max=100, min=1):
        if (amount > max):
            await ctx.send(f"The value is too high! Enter a value `{min}-{max}` between.", delete_after=5)
        elif (amount < min):
            await ctx.send(f"The value is too small! Enter a value `{min}-{max}` between.", delete_after=5)
        else: 
            await ctx.channel.purge(limit=amount+1)
            await ctx.send(f"Törölve {amount}", delete_after=5)

def setup(client):
    client.add_cog(clear(client))```

1

¿Cuál es la llamada que provocó este error? Puedo ver que sucede si pasaste un 'Contexto' objeto como cantidad.

- K.Cl

28/03/2021 a las 13:43

1

Te estás perdiendo a ti mismo

 Łukasz Kwieciński

28/03/2021 a las 13:54

No lo sé. El comando funciona en main.py pero cuando lo transfiero a un archivo separado, aparece esto.

usuario15499621

28/03/2021 a las 14:05



------------------------------------

Como dije en los comentarios, te falta uno mismo en el comando

@commands.command()
async def clear(self, ctx, amount=5, max=100, min=1):
   ...

3

Eso es cierto. En cada función de una clase, debes pasar un "yo".

- electromeow

28/03/2021 a las 14:26

No todas las funciones de una clase aceptan argumentos propios @electromeow; los métodos de clase, los métodos estáticos y el método __new__ no los aceptan

 Łukasz Kwiecesquío

28/03/2021 a las 16:17

Lo sé, pero me refiero a casi todos. ¡Pero gracias por comentar!

- electromeow

29 de marzo de 2021 a las 5:59



------------------------------------

Debes aprobar un examen "yo" param como dijo otra respuesta. Pero también te recomiendo que definas las variables mínimas y máximas en el bloque de código de la función, no en los parámetros de la función. Porque la gente cy cambie el valor mínimo a otro valor. Y en esta situación, el parámetro será una cadena. No los convertiste a números enteros, por lo que generará un error. Nunca confíes en tus usuarios (;

0

Su guía para un futuro mejor - libreflare
Su guía para un futuro mejor - libreflare