ошибка:
Traceback (most recent call last):
  File "C:\Users\Даниил\Desktop\chat-zone\main.py", line 125, in <module>
    chat.connect(user_id)
  File "C:\Users\Даниил\Desktop\chat-zone\main.py", line 95, in connect
    user.connected_user = self.users[
                          ^^^^^^^^^^^
IndexError: list index out of range

код:
import random
import sqlite3
from firebase_admin import credentials, firestore, initialize_app

class User:
    def __init__(self, name, password):
        self.name = name
        self.password = password
        self.id = str(random.randint(100000, 999999))
        self.connected_user = None

class Chat:
    def __init__(self):
        self.users = []
        self.db_conn = sqlite3.connect("chat.db")
        self.firebase_app = initialize_app(credentials.Certificate("C:/Users/Даниил/Desktop/chat-zone/fixfrom-fb61b-firebase-adminsdk-oa4yr-f1ce646419.json")) # Подставьте путь к вашему файлу с учетными данными Firebase
        self.firestore_db = firestore.client()

        self.create_table()

    def send_chat_invite(self, sender, receiver_id):
        query = '''
           SELECT * FROM users WHERE id = ?
           '''
        result = self.db_conn.execute(query, (receiver_id,))
        user_data = result.fetchone()
        if user_data is not None:
            receiver = User(user_data[1], user_data[2])
            receiver.id = user_data[0]
            receiver.connected_user = sender
            print(f"Приглашение отправлено пользователю {receiver.name}.")
        else:
            print("Пользователь с таким ID не существует.")

    def create_table(self):
        query = '''
        CREATE TABLE IF NOT EXISTS users(
            id TEXT PRIMARY KEY,
            name TEXT,
            password TEXT
        )
        '''
        self.db_conn.execute(query)
        self.db_conn.commit()

    def register(self, name, password):
        user = User(name, password)
        self.users.append(user)
        self.save_user_to_db(user)
        self.save_user_to_firestore(user) # Сохранение пользователя в Firestore
        print(f"Регистрация прошла успешно. Ваш ID: {user.id}")

    def save_user_to_db(self, user):
        query = '''
        INSERT INTO users (id, name, password) VALUES (?, ?, ?)
        '''
        self.db_conn.execute(query, (user.id, user.name, user.password))
        self.db_conn.commit()

    def save_user_to_firestore(self, user):
        user_ref = self.firestore_db.collection("users").document(user.id)
        user_data = {
            "name": user.name,
            "password": user.password
        }
        user_ref.set(user_data)

    def login(self, name, password):
        query = '''
        SELECT * FROM users WHERE name = ? AND password = ?
        '''
        result = self.db_conn.execute(query, (name, password))
        user_data = result.fetchone()
        if user_data is not None:
            user = User(user_data[1], user_data[2])
            user.id = user_data[0]
            print("Вход выполнен успешно.")
            return user

        print("Неверное имя пользователя или пароль.")
        return None

    def connect(self, user_id):
        query = '''
        SELECT * FROM users WHERE id = ?
        '''
        result = self.db_conn.execute(query, (user_id,))
        user_data = result.fetchone()
        if user_data is not None:
            user = User(user_data[1], user_data[2])
            user.id = user_data[0]
            print(f"Подключение к пользователю {user.name}...")
            invite_response = input(f"Пользователь {user.name} отправил вам приглашение чата. Принять? (Y/N): ")
            if invite_response == "Y":
                user.connected_user = self.users[
                    0]  # Здесь предполагается, что первый пользователь в списке users - текущий пользователь
                print("Приглашение принято. Вы подключены к чату.")
            else:
                user.connected_user = None
                print("Приглашение отклонено.")
        else:
            print("Пользователь с таким ID не существует.")

chat = Chat()

while True:
    print("1. Регистрация")
    print("2. Вход")
    print("3. Подключиться к пользователю")
    print("4. Выйти")
    choice = input("Выберите действие: ")

    if choice == "1":
        name = input("Введите имя пользователя: ")
        password = input("Введите пароль: ")
        chat.register(name, password)
    elif choice == "2":
        name = input("Введите имя пользователя: ")
        password = input("Введите пароль: ")
        user = chat.login(name, password)
        if user is not None:
            print(f"Ваш ID: {user.id}")
    elif choice == "3":
        user_id = input("Введите ID пользователя: ")
        chat.connect(user_id)
    elif choice == "4":
        if chat.users[0].connected_user is not None:
            invite_response = input("Вы хотите завершить чат. Отключиться от текущего соединения? (Y/N): ")
            if invite_response == "Y":
                chat.users[0].connected_user = None
                print("Чат завершен. Отключение от текущего соединения.")
            else:
                print("Продолжение чата.")
        else:
            break
    else:
        print("Неверный выбор. Попробуйте еще раз.")


так же он работает по неверному принципу. Если я хочу пригласить в чат пользователя и я пишу его айди, то именно у него должен вылезти вопрос, принять ему приглашение или нет, а после уже можно было бы общаться. Исправь код