我有一个名为door的全局变量,在开始时我将其设置为20 在我调用一个应该修改门值的函数后:
class Utilities:
door = 20
inf = Utilities()
@bot.command("door", hidden=True)
def changereqnum(message, chat):
try:
inf.door = int(message.text[5::])
except ValueError:
chat.send('Actually still open to %s requests, Insert a valid number' % (inf.door))
return
chat.send('Now I\'m open to %s requests' % (inf.door))
然后呢? 这里发生的是它说该函数表示它改变了门的值,但是如果我再次调用该函数它仍然会给我20的旧值,有时(随机)新值
我甚至尝试使用类中的对象而不是使用全局值,但仍然不起作用
也许我应该说我在电报机器人的代码中使用这个函数,但整个代码真的很长(900行,你可以找到它here)所以我简化了它
我会尽力做到关于实际输入和输出的事情:首先我使用的是类而不是全局变量,因为它不是很清楚什么是工作,什么不工作。
每当我在我的机器人的聊天中输入“/ door”时,就会调用此函数,它会向我发送“实际上仍然可以打开20个请求......”这样就可以了。
相反,如果我输入“/ door X”然后解析文本并且它应该将inf.door的值更改为数字X,并且它报告,我收到一条消息“现在我对X请求开放”。
无论如何它不起作用,如果我在此之后键入“/ door”它仍然给我inf.door的值是20而不是X我无法解释自己为什么。但是这里有另一个奇怪的事情:如果我在聊天中重复输入“门”,它将随机给我值X,因为它存储了两个值。
答案 0 :(得分:0)
解决了,这是多线程的错误,我使用Redis来存储变量