问题描述
我有这个(过于简化的)Discord 机器人
I have this (overly simplified) Discord bot
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() 命令
The problem
When I call call the vote() command, it always goes through the else part of the code. Even after calling the start() command
我希望 vote() 命令的行为有所不同,具体取决于之前调用的其他两个命令是否
I want that the vote() command behave differently depending on if the other two commands where called previously
我尝试在第一行像这样使用 global 关键字
I tried using the global keyword like this on the first line
global voting_enabled voting_enabled = False
但它什么也没做
推荐答案
global 关键字使用不正确.
global 应该在每个函数中定义.
global should be defined within every function.
例子:
voting_enabled = False @bot.command() async def start(): global voting_enabled voting_enabled = True @bot.command() async def finish(): global voting_enabled voting_enabled = False @bot.command() async def vote(): global voting_enabled if voting_enabled: # Do something else: # Do something else