首页 > 解决方案 > 掷骰子命令问题

问题描述

我正在尝试创建一个命令“-dice”,然后它会以 number1 和 number2 之间的随机数响应。但是,如果他们没有放置 number1 和 number2,那么它只会在 1 和 6 之间放置。

我尝试了一些代码,它说'number1 and number2'是一个必需的参数,当它什么都不放时。当我输入数字时,它说'nil'没有定义。

import random
@client.command()
async def dice(number1, number2):
    if number1 == nil and number2 == nil:
        number = random.randint(1,6)
        print(f"The dice rolled a {number}!")

else:
    number = random.randint(number1, number2)
    print(f"The dice rolled a {number}!")

输入:-dice 输出:骰子掷出

输入:-dice [number1] [number2] 输出:骰子掷出 [number1 和 number2 之间的数字]

标签: pythondiscord.py

解决方案


通过nil,我假设你的意思是Nonenumber1如果是这种情况,我看到您正在尝试检查参数是否number2已传递给函数。

幸运的是,您不需要实现任何逻辑,只需更改您的函数定义:

import random
@client.command() #-> not sure what this is meant to achieve
async def dice(number1=1, number2=6): #-> not sure why you have async here?
    number = random.randint(number1, number2)
    print(f"The dice rolled a {number}!")

在定义中设置number1=1number2=6基本上意味着:'我们的dice函数有两个(可选)参数。如果调用函数时没有传入这些参数的值,则默认分别设置为1和6。但是,如果提供了这些参数的值,则忽略默认值并使用传递给函数调用的值作为各自的值。


推荐阅读