python - Generador de números aleatorios en Discord.py

CorePress2023-11-30  1

@client.command()
async def givenum(ctx):
    await ctx.send("Type a number")
    num1 = ctx.wait_for_message(author=ctx.author)
    await ctx.send("Type a second, larger number")
    num2 = ctx.wait_for_message(author=ctx.author)
    try:
        numb1 = int(num1)
        numb2 = int(num2)
        if numb1 < numb2:
            value = random.randint(num1,num2)
            await ctx.send(f"You got {value}.")
        else:
            await ctx.send(":warning: Please ensure the first number is smaller than the second number.")
    except:
        await ctx.send(":warning: Please use positive integers")

Este es un generador de números aleatorios para nuestro bot discord.py. Cuando ejecutamos este código dice "Escriba un número", pero cuando escribimos un número no envía nada. Ni siquiera da error. Estamos intentando que responda cuando no tiene prefijo



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

Parece que estás usando documentación antigua de async (v0.16.x), prueba esto desde los documentos de reescritura:

@client.command()
async def givenum(ctx):

    # checks the author is responding in the same channel
    # and the message is able to be converted to a positive int
    def check(msg):
        return msg.author == ctx.author and msg.content.isdigit() and \
               msg.channel == ctx.channel

    await ctx.send("Type a number")
    msg1 = await client.wait_for("message", check=check)
    await ctx.send("Type a second, larger number")
    msg2 = await client.wait_for("message", check=check)
    x = int(msg1.content)
    y = int(msg2.content)
    if x < y:
        value = random.randint(x,y)
        await ctx.send(f"You got {value}.")
    else:
        await ctx.send(":warning: Please ensure the first number is smaller than the second number.")

Referencias:

  • Cliente.wait_for()
  • Mensaje.autor
  • Mensaje.canal
  • Mensaje.contenido
  • .isdigit()
2
  • 1 Dice que se proporcionen ambos números, pero no proporciona la respuesta más reciente. Creo que es porque no le dije lo que dice "num1". y "núm2" era -Emir Sürmen 8 de junio de 2020 a las 16:27
  • 1 Lo siento, fue unProblema con mi respuesta, ¡olvidé cambiar el nombre de un par de variables! Debería estar funcionando ahora :^) -Diggy. 8 de junio de 2020 a las 16:36


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

Tendrás que esperar en ctx.wait_for_message(). También me tomé la libertad de arreglar las cosas para que el bot clasifique esos dos números y el usuario no tenga que averiguar cuál es más pequeño.

@client.command()
async def givenum(ctx):
    await ctx.send("Type a number")
    num1 = await ctx.wait_for_message(author=ctx.author)
    await ctx.send("Type a second number")
    num2 = await ctx.wait_for_message(author=ctx.author)
    try:
        numb = int(num1)
        numb = int(num2)
        value = random.randint(min(num1, num2), max(num1, num2))
        await ctx.send(f"You got {value}.")
    except:
        await ctx.send(":warning: Please use positive integers")
0
Su guía para un futuro mejor - libreflare
Su guía para un futuro mejor - libreflare