当两个用户同时使用bot时,电报bot中的值混合在一起

2024-06-16 11:47:41 发布

您现在位置:Python中文网/ 问答频道 /正文

问题:当两个或多个用户使用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")

Tags: 函数答案用户idmessagedefbotchat
1条回答
网友
1楼 · 发布于 2024-06-16 11:47:41

您的问题是,因为n1n2是全局变量,所以每次调用generate_random(您的函数有输入错误)时,您都会为所有用户更改n1n2。因此,避免使用这一行:

global n1, n2

相反,创建一个字典,比如地图的键是聊天的id,值是由函数为每个聊天id生成的元组(n1, n2)。这样,对于每个不同的用户(由聊天id唯一标识),地图中将有一个n1n2的条目。一旦用户正确地解决了难题,您就可以从字典中删除聊天id

相关问题 更多 >