Как заставить телеграмм бота работать одновременно на нескольких аккаунтах?

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

import telebot
from telebot import types
from bs4 import BeautifulSoup
import requests
import re

bot=telebot.TeleBot('2146604141:AAG6DH6tzjF6eVW5MO_HCoBM8')
HOST='https://www.bolha.com'
HEADERS={
    'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36'
}

@bot.message_handler(content_types=['text'])
def start(message):
    bot.send_message(message.from_user.id, "введите ссылку категории для парсинга")
    bot.register_next_step_handler(message, get_URL)

def get_URL(message):
    global URL, ID, count1
    count1=0
    ID=message.from_user.id
    try:
        URL=message.text
        html=get_html(URL)
        if html.status_code==200:
            bot.send_message(message.from_user.id, "введите дату размещения искомых обьявлений в формате: ГГГГ-ММ-ДД например(2021-11-25) или напишите 'No' если не хотите учитывать этот параметр")
            bot.register_next_step_handler(message, get_DATA)
        else:
            bot.send_message(message.from_user.id, "ссылка не подходит")
            start(message)
    except:
        bot.send_message(message.from_user.id, "ссылка не подходит")
        start(message)

def get_DATA(message):
    global DATA, count1, count2
    count2=0
    if count1==0:
        DATA=message.text
    bot.send_message(message.from_user.id, 'максимально допустимое количество сделок у продавца на сайте?')
    count1+=1
    bot.register_next_step_handler(message, get_opit)

def get_opit(message):
    global opit_, count2, count3
    count3=0
    try:
        if count2==0:
            opit_=int(message.text)
        bot.send_message(message.from_user.id, "с какой страницы начать парсинг?")
        count2+=1
        bot.register_next_step_handler(message, get_PAGENATION_ot)
    except:
        bot.send_message(message.from_user.id, "введите число")
        get_DATA(message)

def get_PAGENATION_ot(message):
    global PAGENATION_ot, count3
    try:
        if count3==0:
            PAGENATION_ot=int(message.text)
        bot.send_message(message.from_user.id, "на какой закончить?")
        count3+=1
        bot.register_next_step_handler(message, get_PAGENATION_do)
    except:
        bot.send_message(message.from_user.id, "введите число")
        get_opit(message)

def get_PAGENATION_do(message):
    global PAGENATION_do
    try:
        PAGENATION_do=int(message.text)+1
        start_parsing(message)
    except:
        bot.send_message(message.from_user.id, "введите число")
        get_PAGENATION_ot(message)

далее идет сам функционал парсера

как мне сделать так чтобы ботом могли пользоваться одновременно несколько пользователей? заранее спасибо.


Ответы (1 шт):

Автор решения: user17574267

Асинхронные запросы. Я бы использовал облачные функции: lambda от amazon или google/firebase. Каждый запрос от пользователя к боту - новая функция. При необходимости запросы собирать в бд, потом парсить и отправлять каждому пользователю его результаты.

→ Ссылка