【发布时间】:2018-04-14 05:53:18
【问题描述】:
我正在尝试使用 discord.py 为我的机器人编写一个抽奖命令,并希望用户可以执行以下命令来开始抽奖:
!raffle time 获胜者标题 EG:!raffle 60 1 Pie
我遇到的问题是创建验证以检查前两个输入是否为数字并且标题是否为空白。目前这是我的命令代码:
@bot.command(pass_context=True)
async def raffle(ctx, time, winners, title):
if time != int or winners != int or title != "":
await bot.say("{} raffle has been started for {} seconds and there will be {} winner(s)!".format(title, time, winners))
else:
await bot.say("Seems you went wrong! Raffle format is: !raffle time winners title")
return
但是我没有运气并且收到以下错误:
Ignoring exception in command raffle
Traceback (most recent call last):
File "C:\Users\kairj\AppData\Local\Programs\Python\Python36-32\lib\site-packages\discord\ext\commands\bot.py", line 846, in process_commands
yield from command.invoke(ctx)
File "C:\Users\kairj\AppData\Local\Programs\Python\Python36-32\lib\site-packages\discord\ext\commands\core.py", line 367, in invoke
yield from self.prepare(ctx)
File "C:\Users\kairj\AppData\Local\Programs\Python\Python36-32\lib\site-packages\discord\ext\commands\core.py", line 345, in prepare
yield from self._parse_arguments(ctx)
File "C:\Users\kairj\AppData\Local\Programs\Python\Python36-32\lib\site-packages\discord\ext\commands\core.py", line 304, in _parse_arguments
transformed = yield from self.transform(ctx, param)
File "C:\Users\kairj\AppData\Local\Programs\Python\Python36-32\lib\site-packages\discord\ext\commands\core.py", line 212, in transform
raise MissingRequiredArgument('{0.name} is a required argument that is missing.'.format(param))
discord.ext.commands.errors.MissingRequiredArgument: time is a required argument that is missing.
任何帮助都会很棒,因为我确信这是某个地方的简单错误!
提前致谢
【问题讨论】:
-
time != int等没有意义。将其包装在 try/except.. -
你能详细说明一下吗?我用谷歌搜索了 try/except,但对它如何与代码匹配感到困惑。
-
我在用手机,所以我不能写答案。但是您当前的方法是检查某些内容是否等于内置方法。相反,请使用 try/except 尝试将您的输入转换为 int
标签: python discord.py