#python
#python
Вопрос:
Я написал первого бота в своей жизни, используя python, который получает имя пользователя, пароль и некоторые другие данные из пользовательского ввода, заходит на сайт и нажимает там. Кажется, в этом нет ничего сложного даже для меня, чей опыт в программировании составляет всего 2 месяца))) Если бот используется одним пользователем от начала до конца, все работает так, как должно, но если при этом бот еще не закончил работу для одного пользователя, а некоторые другие пользователи уже начинают его использовать, у меня возникают проблемы, глобальные переменные путаются и смешиваются. Пожалуйста, помогите мне справиться с моей ошибкой (((
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)
Ответ №1:
Я сделал это сам
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