def user_join_fed(fed_id, user_id): with FEDS_LOCK: global FEDERATION_BYOWNER, FEDERATION_BYFEDID, FEDERATION_BYNAME # Variables getfed = FEDERATION_BYFEDID.get(str(fed_id)) owner_id = getfed["owner"] fed_name = getfed["fname"] fed_rules = getfed["frules"] fed_log = getfed["flog"] # Temp set members = eval(eval(getfed["fusers"])["members"]) members.append(user_id) # Set user FEDERATION_BYOWNER[str(owner_id)]["fusers"] = str( {"owner": str(owner_id), "members": str(members)} ) FEDERATION_BYFEDID[str(fed_id)]["fusers"] = str( {"owner": str(owner_id), "members": str(members)} ) FEDERATION_BYNAME[fed_name]["fusers"] = str( {"owner": str(owner_id), "members": str(members)} ) # Set on database fed = Federations( str(owner_id), fed_name, str(fed_id), fed_rules, fed_log, str({"owner": str(owner_id), "members": str(members)}), ) SESSION.merge(fed) SESSION.commit() __load_all_feds_chats() return True
def set_fed_log(fed_id, chat_id): with FEDS_LOCK: global FEDERATION_BYOWNER, FEDERATION_BYFEDID, FEDERATION_BYNAME # Variables getfed = FEDERATION_BYFEDID.get(str(fed_id)) owner_id = getfed["owner"] fed_name = getfed["fname"] fed_members = getfed["fusers"] fed_rules = getfed["frules"] fed_log = str(chat_id) # Set user FEDERATION_BYOWNER[str(owner_id)]["flog"] = fed_log FEDERATION_BYFEDID[str(fed_id)]["flog"] = fed_log FEDERATION_BYNAME[fed_name]["flog"] = fed_log # Set on database fed = Federations( str(owner_id), fed_name, str(fed_id), fed_rules, fed_log, str(fed_members), ) SESSION.merge(fed) SESSION.commit() print(fed_log) return True
def add_warn_filter(chat_id, keyword, reply): with WARN_FILTER_INSERTION_LOCK: warn_filt = WarnFilters(str(chat_id), keyword, reply) if keyword not in WARN_FILTERS.get(str(chat_id), []): WARN_FILTERS[str(chat_id)] = sorted( WARN_FILTERS.get(str(chat_id), []) + [keyword], key=lambda x: (-len(x), x), ) SESSION.merge(warn_filt) # merge to avoid duplicate key issues SESSION.commit()
def user_demote_fed(fed_id, user_id): with FEDS_LOCK: global FEDERATION_BYOWNER, FEDERATION_BYFEDID, FEDERATION_BYNAME # Variables getfed = FEDERATION_BYFEDID.get(str(fed_id)) owner_id = getfed["owner"] fed_name = getfed["fname"] fed_rules = getfed["frules"] fed_log = getfed["flog"] # Temp set try: members = eval(eval(getfed["fusers"])["members"]) except ValueError: return False members.remove(user_id) # Set user FEDERATION_BYOWNER[str(owner_id)]["fusers"] = str( {"owner": str(owner_id), "members": str(members)} ) FEDERATION_BYFEDID[str(fed_id)]["fusers"] = str( {"owner": str(owner_id), "members": str(members)} ) FEDERATION_BYNAME[fed_name]["fusers"] = str( {"owner": str(owner_id), "members": str(members)} ) # Set on database fed = Federations( str(owner_id), fed_name, str(fed_id), fed_rules, fed_log, str({"owner": str(owner_id), "members": str(members)}), ) SESSION.merge(fed) SESSION.commit() return True curr = SESSION.query(UserF).all() result = False for r in curr: if int(r.user_id) == int(user_id): if r.fed_id == fed_id: SESSION.delete(r) SESSION.commit() result = True SESSION.close() return result
def subs_fed(fed_id, my_fed): check = get_spec_subs(fed_id, my_fed) if check: return False with FEDS_SUBSCRIBER_LOCK: subsfed = FedSubs(fed_id, my_fed) SESSION.merge(subsfed) # merge to avoid duplicate key issues SESSION.commit() global FEDS_SUBSCRIBER if FEDS_SUBSCRIBER.get(fed_id, set()) == set(): FEDS_SUBSCRIBER[fed_id] = {my_fed} else: FEDS_SUBSCRIBER.get(fed_id, set()).add(my_fed) return True