使用 discord.py 访问命令之间的变量

2022-01-15 00:00:00 python discord discord.py

问题描述

我有这个(过于简化的)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

相关文章