Форум программистов, компьютерный форум, киберфорум
Python: API, боты
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/28: Рейтинг темы: голосов - 28, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 31.01.2019
Сообщений: 5
Telegram Bot

Не работает одновременно с несколькими пользователями

09.04.2019, 13:07. Показов 5693. Ответов 2

Студворк — интернет-сервис помощи студентам
Всем привет, я написал первого в своей жизни бота, который принимает от юзера логин, пароль и еще некоторые данные, авторизируется на сайте и проводит там некоторые операции. Вроде ничего сложного даже для меня у которого опыта в программировании всего 3 месяца ))) Если ботом пользуется один юзер от начала и до конца, то бот работает как часики и все отрабатывает как надо. Но если во время того как бот все еще не закончил работу для одного юзера, им уже начинают пользоваться несколько юзеров, у меня возникают проблемы, глобальные переменные путаются, бот не знает что ему делать и куда тыкать.

Скажите, в каком направлении копать? Асинхронность и потоки? =( либо есть панацея?

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
import telebot
from telebot.types import Message
from telebot import types
import requests
 
 
bot = telebot.TeleBot('xxx')
 
 
start_text = """
Привет
 
"""
 
payment_text = """
Вы можете выбрать один из способов оплаты:
"""
 
help_text = """
Список команд:
/pushup - запускает процесс
"""
 
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)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.04.2019, 13:07
Ответы с готовыми решениями:

Как изменить телеграм бота на python telebot, чтобы он мог работать с несколькими пользователями одновременно?
Ситуация такова: я делал бота для записи, к примеру в стоматологию, а на конечном этапе разработки...

Телеграмм бот не работает паралельно с несколькими пользователями
Доброго дня ! Хочу спросить, написанный мною бот анализирует отправленный текст пользователем и...

Одновременная работа с несколькими пользователями
Здравствуйте, хочу написать бота для телеграм и в нем подразумевается, что у каждого пользователя...

2
0 / 0 / 0
Регистрация: 05.11.2023
Сообщений: 9
20.11.2024, 16:51
Привет. Скажи, не нашёл ли ты решения? Вопрос по сей день актуальный
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,694
Записей в блоге: 29
20.11.2024, 18:46
чем вопрос то актуальный? нужно просто освоить основы ЯП на котором пишете. Если ты используешь глобалки то как намерен реализовать работу на 2-3 пользователей? ОЧевидно что для каждого пользователя нужно хранить его собственное, уникальное состояние
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.11.2024, 18:46
Помогаю со студенческими работами здесь

Telegram-бот с одновременной работой нескольких пользователей
Друзья, добрый день. У меня к вам вот какой вопрос. Решил написать бота для ТГ, который должен...

Можно ли в vk_api при получении сообщения из чата (не от пользователя), узнать id пользователя, который отправил?
Можно ли в vk_api при получении сообщения из чата (не от пользователя), узнать id пользователя,...

Как соединить 2 цепочки blockchain? Надо чтобы они работали одновременно
И так ситуация не из лучших. Я делаю свою криптоманету, и ее алгоритм подразумевает соединение двух...

Почему, используя модуль requests, нельзя одновременно одним post запросом передать files и json?
import requests files = {fileName: f} json = {'nomer': '99'} ask =...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru