简体   繁体   English

如何在电报机器人中同时管理多个用户请求?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM