问题:当两个或多个用户使用bot的this函数时——想象一下,如果第一个用户的正确答案是ex.30,第二个用户的正确答案是10,问题在于,如果第一个用户给出错误答案,则函数生成新的谜题(新数字)第一个用户的正确答案也会改变,但我的代码也会改变第二个用户的正确答案
我正在使用PyBotapi(Telebot)python库
这是我的代码:
n1 = random.randint(1, 100)
n2 = random.randint(1, 100)
# Generating Random Number For Verifications
def genrate_random():
global n1, n2
n1 = random.randint(1, 100)
n2 = random.randint(1, 100)
# Bot Start Command
@bot.message_handler(commands=['start'])
def start_command(message):
genrate_random()
chat_id = message.chat.id
prove_yourself(chat_id)
def prove_yourself(chat_id):
result = bot.send_message(chat_id, "ℹ️ Prove That You Are A Human!\n\n" + str(n1) + '+' + str(n2) + " = ?")
bot.register_next_step_handler(result, verifyUser)
def verifyUser(message):
if int(message.text) != int(n1 + n2):
bot.send_message(message.chat.id, '❌ Wrong Answer ❌')
genrate_random()
prove_yourself(message.chat.id)
else:
print("next step")
您的问题是,因为
n1
和n2
是全局变量,所以每次调用generate_random
(您的函数有输入错误)时,您都会为所有用户更改n1
和n2
。因此,避免使用这一行:相反,创建一个字典,比如地图的键是聊天的id,值是由函数为每个聊天id生成的元组
(n1, n2)
。这样,对于每个不同的用户(由聊天id唯一标识),地图中将有一个n1
和n2
的条目。一旦用户正确地解决了难题,您就可以从字典中删除聊天id相关问题 更多 >
编程相关推荐