Как создать цепь клиент-бот-клиент для телеграм бота на python

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

Вторая часть такова: нужно чтобы люди по определённым условиям(ориентация и предпочтительный возраст) сопрягались с другим человеком, если их параметры обоюдно удовлетворительны, а после, в самом диалоге с ботом могли вести диалог между собой, после чего по велению команды эта цепь обрывалась и пользователь мог написать кому-то другому.

Как это можно реализовать? Желательно не используя новый способ хранения базы данных, оставив его в прежнем виде.

-*- coding: utf-8 -*-
import json

import telebot 
from telebot import types 
bot = telebot.TeleBot(TELEGRAM_TOKEN) 
user_dict = {}

class User: 
    def __init__(self, name): 
        self.name = name 
        self.age = None 
        self.sex = None 
    def __repr__(self): 
        return f"User({self.name}, {self.age}, {self.sex})"


def save_users(): 
    dumped_users = {} 
    for chat_id, user in user_dict.items(): 
        dumped_users[chat_id] = { #
            "name": user.name, 
            "age": user.age, 
            "sex": user.sex, 
        }
    with open("users.json", "w") as users_file: 
        users_file.write(json.dumps(dumped_users, indent=2)) 
def load_users(): 
    with open("users.json") as users_file: 
        loaded_users = json.loads(users_file.read()) 
    for chat_id, user_as_dict in loaded_users.items(): 
        user = User(user_as_dict["name"])
        user.age = user_as_dict["age"]
        user.sex = user_as_dict["sex"]
        user_dict[int(chat_id)] = user 


try:
    load_users() 
except:
    print("Не смог загрузить пользователей") 


@bot.message_handler(commands=["help", "start"]) 
def send_welcome(message): 
    msg = bot.reply_to(
        message, 
        """\
Hi there, I am Example bot.
What's your name?
""",
    )
    bot.register_next_step_handler(msg, process_name_step) 

def process_name_step(message): 
    chat_id = message.chat.id 
    name = message.text 
    user = User(name) 
    user_dict[chat_id] = user 
    try:
        msg = bot.reply_to(message, "How old are you?")
        bot.register_next_step_handler(msg, process_age_step) 
    except Exception as e:
        bot.reply_to(message, "oooops") 

def process_age_step(message): 
    chat_id = message.chat.id 
    age = message.text 
    try: #Действо. 
        if not age.isdigit(): 
            msg = bot.reply_to(message, "Age should be a number. How old are you?")
            bot.register_next_step_handler(msg, process_age_step) 
            return
        user = user_dict[chat_id] 
        user.age = age
        markup = types.ReplyKeyboardMarkup(one_time_keyboard=True) 
        markup.add("Male", "Female") 
        msg = bot.reply_to(message, "What is your gender", reply_markup=markup) 
        bot.register_next_step_handler(msg, process_sex_step) 
    except Exception as e: 
        bot.reply_to(message, "oooops")


def process_sex_step(message): 
    print(user_dict)
    chat_id = message.chat.id 
    sex = message.text 
    try:
        user = user_dict[chat_id] 
        if sex == "Male" or sex == "Female":
            user.sex = sex 
        else:
            raise Exception()

        save_users() 

        bot.send_message(  
            chat_id, f"Nice to meet you {user.name}\n Age: {user.age}\n Sex: {user.sex}"
        )
    except Exception as e: 
        markup = types.ReplyKeyboardMarkup(one_time_keyboard=True) 
        markup.add("Male2", "Female2") 
        msg = bot.reply_to(message, "What is your gender", reply_markup=markup) 
        bot.register_next_step_handler(msg, process_sex_step) 


@bot.message_handler(commands=["about_me"]) 
def about_me(message):
    user = user_dict.get(message.chat.id) 
        bot.send_message(message.chat.id, "Not found") 
    else:
        print(user)
        bot.send_message(
            message.chat.id, f"You are {user.name}\n Age: {user.age}\n Sex: {user.sex}"
        )


@bot.message_handler(commands=["all_users"]) 
def all_users(message): 
    for user in list(user_dict.values()): 
        bot.send_message( 
            message.chat.id, f"User {user.name}\n Age: {user.age}\n Sex: {user.sex}"
        )


@bot.message_handler() 
def broadcast(message): 
    user = user_dict.get(message.chat.id)
    if user is None: 
        bot.send_message(message.chat.id, "Please write: /start")
        return

    for chat_id in list(user_dict.keys()):
        if message.chat.id == chat_id:
            continue
        bot.send_message(chat_id, f"{user.name}: {message.text}")



bot.enable_save_next_step_handlers(delay=2)


bot.load_next_step_handlers()

bot.polling()```

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