[英]How to manage several users requests at the same time in a telegram bot?
I wrote the first bot in my life using python, which get a username, password and some other data from user input, enter into a site and do some clicking there.我使用 python 编写了我生命中的第一个机器人,它从用户输入中获取用户名、密码和其他一些数据,进入一个站点并点击那里。 It seems to be nothing complicated even for me whose experience in programming is only 2 months))) If the bot is used by one user from beginning to end, everything works well as it should, But if while the bot still has not finished working for one user and some other users are already beginning to use it, I have problems, global variables are confused and mixed.
即使对于我只有 2 个月的编程经验,这似乎也不复杂)))如果机器人从头到尾都被一个用户使用,那么一切都正常,但是如果机器人还没有完成工作对于一个用户和其他一些用户已经开始使用它,我有问题,全局变量混乱和混合。 Please help me to handle my bug (((
请帮我处理我的错误 (((
import telebot
from telebot.types import Message
from telebot import types
import requests
bot = telebot.TeleBot('xxx')
start_text = """
Hello
"""
payment_text = """
Chose the payment type:
"""
help_text = """
Commands:
/pushup - starting
"""
def check_reg(login, password):
r = requests.post('xxx', data={'login': str(login), 'password':
str(password)})
response = r.text
return response
@bot.message_handler(commands=['start'])
def start_handler(message: Message):
bot.send_message(message.from_user.id, start_text)
@bot.message_handler(commands=['help'])
def help_handler(message: Message):
bot.send_message(message.from_user.id, help_text)
@bot.message_handler(commands=['up'])
def login_handler(message: Message):
bot.send_message(message.from_user.id, a)
bot.register_next_step_handler(message, get_login)
@bot.message_handler(content_types=['text'])
def text_handler(message: Message):
bot.send_message(message.from_user.id, b)
def get_login(message: Message):
if '@' in message.text or '+' in message.text:
global login
login = message.text
bot.send_message(message.from_user.id, c)
bot.register_next_step_handler(message, get_psw)
else:
bot.send_message(message.from_user.id, d)
bot.register_next_step_handler(message, get_login)
def get_psw(message):
global password
password = message.text
if check_reg(login, password) == '1':
bot.send_message(message.from_user.id, e)
bot.register_next_step_handler(message, get_up)
else:
bot.send_message(message.from_user.id, f)
def get_up(message):
global up
up = message.text
if up.isdigit():
if int(up) <= 0:
bot.send_message(message.from_user.id, g)
bot.register_next_step_handler(message, get_up)
else:
get_url(message)
else:
bot.send_message(message.from_user.id, h)
bot.register_next_step_handler(message, get_up)
def get_url(message):
keyboard = types.InlineKeyboardMarkup()
key_xx = types.InlineKeyboardButton("xx", callback_data='xx')
keyboard.add(key_xx)
key_yy = types.InlineKeyboardButton("yy", callback_data='yy')
keyboard.add(key_yy)
bot.send_message(message.from_user.id, text=i, reply_markup=keyboard)
@bot.callback_query_handler(func=lambda call: True)
def callback_worker(call):
global url
if call.data == "xx":
url = "xx"
test(call)
elif call.data == "yy":
url = "yy"
test(call)
def test(message):
test= test()
if test.login(url, login, password):
bot.send_message(message.from_user.id, j)
if test.auto_click(up):
bot.send_message(message.from_user.id, k)
bot.send_message(message.from_user.id, n)
test.kill_task()
else:
bot.send_message(message.from_user.id, l)
test.kill_task()
else:
bot.send_message(message.from_user.id, m)
bot.register_next_step_handler(message, get_login)
test.kill_task()
bot.polling(timeout=90)
I did it by myself我自己做的
user = {}
class user_cred():
login = ''
password = ''
up = ''
def __init__(self, login, password, up):
self.login = login
self.password = password
self.up = up
def set_login(self, login):
self.login = login
def set_password(self, password):
self.password = password
def set_up(self, up):
self.up = up
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.