基于python的discord机器人的随机数生成器

基于python的discord机器人的随机数生成器,python,random,discord,discord.py,Python,Random,Discord,Discord.py,我想做的是当有人进入命令!random(argument)我希望机器人生成一个介于1和作为参数的值之间的数字。但每当我尝试这样做时,它都会给我带来6个不同的错误,这些错误很长,对我来说毫无意义。下面是此命令的当前代码 @Bot.command(pass_context=True) async def random1and10(ctx, number): arg = random.randint(1, number) if number: await Bot.say

我想做的是当有人进入命令!random(argument)我希望机器人生成一个介于1和作为参数的值之间的数字。但每当我尝试这样做时,它都会给我带来6个不同的错误,这些错误很长,对我来说毫无意义。下面是此命令的当前代码

@Bot.command(pass_context=True)
async def random1and10(ctx, number):
    arg = random.randint(1, number)
    if number:
        await Bot.say(arg)
    else:
        await Bot.say('Please select a valid number')

我猜
number
是作为字符串传递的,因此:

  • 在将其传递给
    randint
  • 在“说”之前,可能需要再次将其转换为字符串
此外,您没有使用正确的方法检查错误的整数值
if number
永远不会为
False
,因为
randint
调用只会返回大于
0
的整数(或引发错误)


固定版本类似于:

@Bot.command(pass_context=True)
async def random1and10(ctx, number):
    try:
        arg = random.randint(1, int(number))
    except ValueError:
        await Bot.say("Invalid number")
    else:
        await Bot.say(str(arg))
你的里程可能不同,我没有跑。我不确定装饰过的函数签名


每当我尝试这样做的时候,它会给我6个不同的错误,这些错误很长,对我来说毫无意义


也许它们对其他人来说是有意义的:)我对这个网站比较陌生,但我认为在你的帖子中包含它们会更好。干杯

分配
arg
时,在检查
if
语句中是否存在参数
number
之前,您正在使用该参数。第一件事是在
if
语句中而不是在它之前分配
arg
。将
number
输入也转换为
int
可能是个好主意,如下所示<代码>随机1和10(ctx,编号:int):。除此之外,如果不知道你会遇到什么具体的错误,别人也不会给你很多建议。