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

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

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

Author24 — интернет-сервис помощи студентам
Всем привет, я написал первого в своей жизни бота, который принимает от юзера логин, пароль и еще некоторые данные, авторизируется на сайте и проводит там некоторые операции. Вроде ничего сложного даже для меня у которого опыта в программировании всего 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
Ответы с готовыми решениями:

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

Чат-бот. Общение с несколькими пользователями
Пробую написать простого бота, для викторины. (Задание на практике, знаний в C# очень мало) Пока что викторина реализована следующим...

Бот Telegram не работает
Не работает бот. При попытке запустить консольное приложение,через несколько секунд появляется ошибка на строчке получения login-а бота....

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

Бот telegram не может подключиться к https://api.telegram.org:443: (Java)
Здравствуйте! Возникла такая проблема при запуске бота в intelij idea ultimate программа выдает такое сообщение:&quot;юн. 02, 2018 8:42:11...

Один объект SqlConnection работает с несколькими командами одновременно?
Один объект SqlConnection может одновременно выполнять несколько SqlCommand одновременно или она выполняет только последовательно?

Работа с несколькими пользователями
Доброго времени суток. Я в web'e новичок, попросили написать небольшой портал. За основу взял tomcat-servlet-jsp-java. Все написано все...

Изменение записи несколькими пользователями
Добрый день Борюсь с изменением записи несколькими пользователями. Фото во вложении. Нашел интересный выход, но есть нюансы. В...

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


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему

Редактор формул (кликните на картинку в правом углу, чтобы закрыть)
Новые блоги и статьи
Java Record или Kotlin Data Class: что лучше для неизменяемых данных
Wired 04.03.2025
Java Record и Kotlin Data Class - средства для работы с неизменяемыми структурами данных, каждое из которых предлагает свой уникальный подход к решению этой задачи. История их появления весьма. . .
Создание производительны­­х API с Java и gRPC
Wired 04.03.2025
В разработке производительность и масштабируемость микросервисных приложений играют ключевую роль. Традиционные REST API, несмотря на свою популярность и простоту, не всегда способны обеспечить. . .
Что нового в JDK 24
Wired 04.03.2025
JDK 24 знаменует собой значительный скачок в развитии Java, внося фундаментальные улучшения в производительность, безопасность и удобство разработки. Релиз включает множество революционых изменений,. . .
Разработка блокчейн с использованием Java: смарт-контракты и dApp
Wired 04.03.2025
Современная блокчейн-разработка на Java предоставляет разработчикам широкий спектр возможностей. В отличие от Solidity, который ограничен экосистемой Ethereum, Java позволяет создавать как. . .
WebAssembly в Kubernetes
stackOverflow 03.03.2025
В современной экосистеме облачных технологий WebAssembly (Wasm) становится все более значимым компонентом, предлагая уникальный подход к выполнению кода в распределенных системах. Эта технология. . .
GitHub Actions или Jenkins: Выбираем CI/CD платформу
stackOverflow 03.03.2025
Непрерывная интеграция и развертывание (CI/ CD) изменили подход к разработке программного обеспечения, превратив его в бесшовный процесс от написания кода до развертывания в продакшн. GitHub Actions и. . .
Автоматизация тестирования Pull Request в Kubernetes: Интеграция с GitHub Actions и GKE
stackOverflow 03.03.2025
Масштабные проекты с использованием Kubernetes требуют надежной системы тестирования изменений перед их внедрением в продакшн-среду. Традиционный подход с ручной проверкой Pull Request не справляется. . .
Tестирование Pull Request в Kubernetes с помощью vCluster
stackOverflow 03.03.2025
При работе с микросервисной архитектурой критически важно обеспечить качественное тестирование каждого изменения перед его слиянием в основную кодовую базу. Однако тестирование Pull Request в. . .
Использование пакета Context в Golang
bytestream 03.03.2025
Управление параллельными процессами в современных приложениях - сложная задача, особенно когда речь идет о микросервисной архитектуре и распределенных системах. Пакет context в Go - это гибкое. . .
WebAssembly и Go: Работа с DOM и обработка ошибок
bytestream 03.03.2025
WebAssembly представляет собой технологию, позволяющую запускать низкоуровневый код в браузере практически на нативной скорости. Особенно интересные возможности открываются при использовании. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru