@bot.command(name='randnum')
async def randnum(ctx, arg1, arg2):
randnum = random.randint(*arg1, *arg2)
await ctx.send('spinning...')
time.sleep(2)
await ctx.send('your random number is', randnum)
arg1 和 arg2 将是用户输入的数字,然后机器人从这些值之间随机选择一个。
当我运行它时,它给我 TypeError: randnum() missing 1 required keyword-only argument: 'arg2' 为什么会发生这种情况,我该如何解决?
您的代码的问题是 random.randint() 方法需要两个整数参数,但 arg1 和 arg2 是需要转换为整数才能在 random.randint() 方法中使用的字符串。
您可以通过将 randnum 行更改为以下内容来修复错误:
randnum = random.randint(int(arg1), int(arg2))
这会将 arg1 和 arg2 字符串转换为整数,然后再将它们传递给 random.randint()。
此外, await ctx.send('your random number is', randnum) 行将引发 TypeError 因为您将两个参数传递给 ctx.send() 而不是一个。您可以通过使用 + 运算符连接字符串和随机数来解决此问题,如下所示:
await ctx.send('your random number is ' + str(randnum))
总而言之,您的代码应如下所示:
@bot.command(name='randnum')
async def randnum(ctx, arg1, arg2):
randnum = random.randint(int(arg1), int(arg2))
await ctx.send('spinning...')
time.sleep(2)
await ctx.send('your random number is ' + str(randnum))