def find_create_channel(name: str, server, parent: int = None): channels = server.getChannels() for cid, channel in channels.items(): if parent: if channel.name == name and channel.parent == parent: return channel else: if channel.name == name: return channel new_cid = server.addChannel(name, parent if parent else 0) return server.getChannelState(new_cid) def get_empty_channels(server, parent: int = None): empty_channels = [] channels = server.getChannels() for cid, channel in channels.items(): if parent: if channel.parent == parent and len(get_user_for_channel(cid, server)) == 0: empty_channels.append(cid) return empty_channels def get_subchannels(server, parent: int): sub_channel = [] channels = server.getChannels() for cid, channel in channels.items(): if channel.parent == parent: sub_channel.append(channel) return sub_channel def get_user_for_channel(cid, server): users = server.getUsers() users_in_channel = {} for uid, user in users.items(): if user.channel == cid: users_in_channel[uid] = user return users_in_channel