【发布时间】:2021-10-09 20:56:47
【问题描述】:
我无法创建一个简单的开/关开关。 我是初学者,正在编写一个不和谐的机器人来娱乐和学习。我的机器人在不止一台服务器上,这就是为什么全局变量不是一个选项的原因(在一台服务器上运行它也会为其他服务器更改它)。 将变量放入命令中不是一种选择,因为每次我运行命令时,它都会定义它。 我需要一些存在但只能由子流程定义的东西。
@bot.command()
async def xxx(ctx):
# global x # doesn't work correctly
# x = "" # doesn't work correctly
if x != True:
x = True
await ctx.send("X is on!")
else:
x = False
await ctx.send("X is off!")
while x == True:
#some code calculations here, blablabla
await asyncio.sleep(60)
我的问题有什么解决方案? 谢谢。
【问题讨论】:
-
您对函数
def x()和变量x = ...使用相同的名称 - 这会产生很大的问题。 -
对不起,这是一个例子我实际上没有使用相同的名字,现在编辑,改为def xxx()
-
也许你应该使用带有服务器名称的字典
if x["server name"] is not True: -
绝对值得研究,但乍一看 - 如果我将机器人公开,我无法跟踪所有服务器以放入字典、代码
-
您不必在开始时添加所有服务器 - 您可以检查运行此功能的服务器,如果字典中不存在则将其添加到字典中。
if 'server name' not in x: x["server name"] = True
标签: python variables discord undefined exists