【发布时间】:2018-06-05 21:52:25
【问题描述】:
我有这个(过于简化的)Discord 机器人
voting_enabled = False
@bot.command()
async def start():
voting_enabled = True
@bot.command()
async def finish():
voting_enabled = False
@bot.command()
async def vote():
if voting_enabled:
# Do something
else:
# Do something else
问题
当我调用vote() 命令时,它总是通过代码的else 部分。即使在调用了start() 命令之后
我想要达到的目标
我希望 vote() 命令的行为有所不同,具体取决于之前是否调用了其他两个命令
我尝试了什么
我尝试在第一行使用像这样的global 关键字
global voting_enabled
voting_enabled = False
但它什么也没做
【问题讨论】:
-
对不起,你怎么知道“
start()和finish()commands 都没有改变voting_enabled 的值”?您的任务是异步的,那么您怎么知道voting_enabled没有打开然后又关闭? -
@ubadub 当我调用
vote()命令时,它总是通过else 部分。即使在致电start() -
何时/何地调用
finish()?我假设你已经遗漏了代码,因为你说它过于简化了。 -
finish()在投票结束时被用户调用。我认为这与问题无关。调用顺序为start()>vote()>finish(),其中vote()可以调用多次。 -
你是如何使用
global关键字的?
标签: python discord discord.py