我正在制作一个discord.py机器人,我正在尝试实现一个命令,告诉你在这个时期结束之前有多少时间。代码本身工作,但如果我尝试将其实现到bot中,我会收到此错误:
NameError:未定义名称'timer'
(该变量称为'timee',因为我之后也使用time.sleep()函数)
这是它遇到问题的代码:
def setTime():
global timee
print(timee)
if timee > 59 and timee < 100:
timee -= 100
timee += 60
elif timee > 159 and timee < 200:
timee -= 100
timee += 60
elif timee > 259 and timee < 300:
timee -= 100
timee += 60
我有print(timee)
在那里测试它是否认为它是定义与否,它没有。
这是我调用setTime
函数的代码(也应该设置时间)
if currentTime < start:
timee = start - currentTime
print(timee)
setTime()
doThing()
await client.send_message(message.channel, content = "School hasn't started yet! It starts in %s:%s" % (hours, minutes))
print("%s got the time left." % message.author)
编辑:'time'变量在if语句和函数之外声明。
编辑2:我尝试了某人评论,(评论现在被删除),这是做def setTime(timee):
而不是
def setTime():
global timee
这很有效。我不知道这是低效还是什么,但它有效。此外,如果它不在discord机器人中,这个完全相同的代码也可以工作。
做def setTime(timee):
(而不是使用def setTime():
而只是尝试使用全局变量)然后从函数内部调用'timee'似乎可以解决所有问题。
如果有一些更有效或更好的方法来做到这一点然后告诉,但现在我可能会坚持这一点,因为这是我发现的工作。