def __load_chat_blacklists(): global CHAT_BLACKLISTS try: chats = SESSION.query(BlackListFilters.chat_id).distinct().all() for (chat_id, ) in chats: # remove tuple by ( ,) CHAT_BLACKLISTS[chat_id] = [] all_filters = SESSION.query(BlackListFilters).all() for x in all_filters: CHAT_BLACKLISTS[x.chat_id] += [x.trigger] CHAT_BLACKLISTS = {x: set(y) for x, y in CHAT_BLACKLISTS.items()} finally: SESSION.close()
def __load_chat_userrestirect(): global CHAT_USERRESTIRECT try: chats = SESSION.query(UserRestirect.chat_id).distinct().all() for (chat_id, ) in chats: # remove tuple by ( ,) CHAT_USERRESTIRECT[chat_id] = [] all_filters = SESSION.query(UserRestirect).all() for x in all_filters: CHAT_USERRESTIRECT[x.chat_id] += [x.user_id] CHAT_USERRESTIRECT = {x: set(y) for x, y in CHAT_USERRESTIRECT.items()} finally: SESSION.close()
def user_demote_fed(fed_id, user_id): with FEDS_LOCK: curr = SESSION.query(UserF).all() result = False for r in curr: print(r.user_id, user_id, r.fed_id, fed_id) if int(r.user_id) == int(user_id): print("yes1 - ", r.user_id, user_id) if r.fed_id == fed_id: print("yes2 - ", r.fed_id, fed_id) SESSION.delete(r) SESSION.commit() result = True SESSION.close() return result
def _load_chat_blacklist(): global CHAT_URL_BLACKLISTS try: chats = SESSION.query(URLBlackListFilters.chat_id).distinct().all() for (chat_id, ) in chats: CHAT_URL_BLACKLISTS[chat_id] = [] all_urls = SESSION.query(URLBlackListFilters).all() for url in all_urls: CHAT_URL_BLACKLISTS[url.chat_id] += [url.domain] CHAT_URL_BLACKLISTS = { k: set(v) for k, v in CHAT_URL_BLACKLISTS.items() } finally: SESSION.close()
def rm_note(chat_id, note_name): with NOTES_INSERTION_LOCK: note = SESSION.query(Notes).get((str(chat_id), note_name)) if note: with BUTTONS_INSERTION_LOCK: buttons = SESSION.query(Buttons).filter(Buttons.chat_id == str(chat_id), Buttons.note_name == note_name).all() for btn in buttons: SESSION.delete(btn) SESSION.delete(note) SESSION.commit() return True else: SESSION.close() return False
def is_restr_locked(chat_id, lock_type): curr_restr = SESSION.query(Restrictions).get(str(chat_id)) SESSION.close() if not curr_restr: return False if lock_type == "messages": return curr_restr.messages elif lock_type == "media": return curr_restr.media elif lock_type == "other": return curr_restr.other elif lock_type == "previews": return curr_restr.preview elif lock_type == "all": return curr_restr.messages and curr_restr.media and curr_restr.other and curr_restr.preview
def __load_chat_warn_filters(): global WARN_FILTERS try: chats = SESSION.query(WarnFilters.chat_id).distinct().all() for (chat_id, ) in chats: # remove tuple by ( ,) WARN_FILTERS[chat_id] = [] all_filters = SESSION.query(WarnFilters).all() for x in all_filters: WARN_FILTERS[x.chat_id] += [x.keyword] WARN_FILTERS = { x: sorted(set(y), key=lambda i: (-len(i), i)) for x, y in WARN_FILTERS.items() } finally: SESSION.close()
def __load_all_feds_banned(): global FEDERATION_BANNED_USERID, FEDERATION_BANNED_FULL try: FEDERATION_BANNED_USERID = {} FEDERATION_BANNED_FULL = {} qall = SESSION.query(BansF).all() for x in qall: check = FEDERATION_BANNED_USERID.get(x.fed_id) if check == None: FEDERATION_BANNED_USERID[x.fed_id] = [] if int(x.user_id) not in FEDERATION_BANNED_USERID[x.fed_id]: FEDERATION_BANNED_USERID[x.fed_id].append(int(x.user_id)) check = FEDERATION_BANNED_FULL.get(x.fed_id) if check == None: FEDERATION_BANNED_FULL[x.fed_id] = {} FEDERATION_BANNED_FULL[x.fed_id][x.user_id] = {'first_name': x.first_name, 'last_name': x.last_name, 'user_name': x.user_name, 'reason': x.reason} finally: SESSION.close()
def __load_all_feds_chats(): global FEDERATION_CHATS, FEDERATION_CHATS_BYID try: qall = SESSION.query(ChatF).all() FEDERATION_CHATS = {} FEDERATION_CHATS_BYID = {} for x in qall: # Federation Chats check = FEDERATION_CHATS.get(x.chat_id) if check == None: FEDERATION_CHATS[x.chat_id] = {} FEDERATION_CHATS[x.chat_id] = {'fid': x.fed_id} # Federation Chats By ID check = FEDERATION_CHATS_BYID.get(x.fed_id) if check == None: FEDERATION_CHATS_BYID[x.fed_id] = [] FEDERATION_CHATS_BYID[x.fed_id].append(x.chat_id) finally: SESSION.close()
def remove_warn(user_id, chat_id): with WARN_INSERTION_LOCK: removed = False warned_user = SESSION.query(Warns).get((user_id, str(chat_id))) temp_reason = [] if warned_user and warned_user.num_warns > 0: warned_user.num_warns -= 1 if warned_user and warned_user.reasons is not None: for reason in warned_user.reasons: temp_reason.append(reason) del temp_reason[-1] warned_user.reasons = temp_reason SESSION.add(warned_user) SESSION.commit() removed = True SESSION.close() return removed
def remove_filter(chat_id, keyword): global CHAT_FILTERS with CUST_FILT_LOCK: filt = SESSION.query(CustomFilters).get((str(chat_id), keyword)) if filt: if keyword in CHAT_FILTERS.get(str(chat_id), []): # Sanity check CHAT_FILTERS.get(str(chat_id), []).remove(keyword) with BUTTON_LOCK: prev_buttons = SESSION.query(Buttons).filter( Buttons.chat_id == str(chat_id), Buttons.keyword == keyword).all() for btn in prev_buttons: SESSION.delete(btn) SESSION.delete(filt) SESSION.commit() return True SESSION.close() return False
def __load_cleaner_list(): global GLOBAL_IGNORE_COMMANDS global CLEANER_CHATS try: GLOBAL_IGNORE_COMMANDS = { int(x.command) for x in SESSION.query(CleanerBlueTextGlobal).all() } finally: SESSION.close() try: for x in SESSION.query(CleanerBlueTextChatSettings).all(): CLEANER_CHATS.setdefault(x.chat_id, { "setting": False, "commands": set() }) CLEANER_CHATS[x.chat_id]["setting"] = x.is_enable finally: SESSION.close() try: for x in SESSION.query(CleanerBlueTextChat).all(): CLEANER_CHATS.setdefault(x.chat_id, { "setting": False, "commands": set() }) CLEANER_CHATS[x.chat_id]["commands"].add(x.command) finally: SESSION.close()
def __load_all_feds(): global FEDERATION_BYOWNER, FEDERATION_BYFEDID, FEDERATION_BYNAME try: feds = SESSION.query(Federations).all() for x in feds: # remove tuple by ( ,) # Fed by Owner check = FEDERATION_BYOWNER.get(x.owner_id) if check == None: FEDERATION_BYOWNER[x.owner_id] = [] FEDERATION_BYOWNER[str(x.owner_id)] = {'fid': str(x.fed_id), 'fname': x.fed_name, 'frules': x.fed_rules, 'fusers': str(x.fed_users)} # Fed By FedId check = FEDERATION_BYFEDID.get(x.fed_id) if check == None: FEDERATION_BYFEDID[x.fed_id] = [] FEDERATION_BYFEDID[str(x.fed_id)] = {'owner': str(x.owner_id), 'fname': x.fed_name, 'frules': x.fed_rules, 'fusers': str(x.fed_users)} # Fed By Name check = FEDERATION_BYNAME.get(x.fed_name) if check == None: FEDERATION_BYNAME[x.fed_name] = [] FEDERATION_BYNAME[x.fed_name] = {'fid': str(x.fed_id), 'owner': str(x.owner_id), 'frules': x.fed_rules, 'fusers': str(x.fed_users)} finally: SESSION.close()
def chat_ignore_command(chat_id, ignore): ignore = ignore.lower() with CLEANER_CHAT_LOCK: ignored = SESSION.query(CleanerBlueTextChat).get( (str(chat_id), ignore)) if not ignored: if str(chat_id) not in CLEANER_CHATS: CLEANER_CHATS.setdefault(str(chat_id), { "setting": False, "commands": set() }) CLEANER_CHATS[str(chat_id)]["commands"].add(ignore) ignored = CleanerBlueTextChat(str(chat_id), ignore) SESSION.add(ignored) SESSION.commit() return True SESSION.close() return False
def chat_unignore_command(chat_id, unignore): unignore = unignore.lower() with CLEANER_CHAT_LOCK: unignored = SESSION.query(CleanerBlueTextChat).get( (str(chat_id), unignore)) if unignored: if str(chat_id) not in CLEANER_CHATS: CLEANER_CHATS.setdefault(str(chat_id), { "setting": False, "commands": set() }) if unignore in CLEANER_CHATS.get(str(chat_id)).get("commands"): CLEANER_CHATS[str(chat_id)]["commands"].remove(unignore) SESSION.delete(unignored) SESSION.commit() return True SESSION.close() return False
def get_chat_members(chat_id): try: return SESSION.query(ChatMembers).filter( ChatMembers.chat == str(chat_id)).all() finally: SESSION.close()
def get_name_by_userid(user_id): try: return SESSION.query(Users).get(Users.user_id == int(user_id)).first() finally: SESSION.close()
def get_userid_by_name(username): try: return SESSION.query(Users).filter( func.lower(Users.username) == username.lower()).all() finally: SESSION.close()
def num_blacklist_filter_chats(): try: return SESSION.query(func.count(distinct( BlackListFilters.chat_id))).scalar() finally: SESSION.close()
def num_blacklist_chat_filters(chat_id): try: return SESSION.query(BlackListFilters.chat_id).filter( BlackListFilters.chat_id == str(chat_id)).count() finally: SESSION.close()
def get_user_num_chats(user_id): try: return SESSION.query(ChatMembers).filter( ChatMembers.user == int(user_id)).count() finally: SESSION.close()
def get_welc_buttons(chat_id): try: return SESSION.query(WelcomeButtons).filter(WelcomeButtons.chat_id == str(chat_id)).order_by( WelcomeButtons.id).all() finally: SESSION.close()
def num_users(): try: return SESSION.query(Users).count() finally: SESSION.close()
def get_all_chats(): try: return SESSION.query(Chats).all() finally: SESSION.close()
def get_all_users(): try: return SESSION.query(Users).all() finally: SESSION.close()
def get_gdbye_buttons(chat_id): try: return SESSION.query(GoodbyeButtons).filter(GoodbyeButtons.chat_id == str(chat_id)).order_by( GoodbyeButtons.id).all() finally: SESSION.close()
def num_chats(): try: return SESSION.query(Chats).count() finally: SESSION.close()
def num_blacklist_filters(): try: return SESSION.query(BlackListFilters).count() finally: SESSION.close()
def num_logchannels(): try: return SESSION.query(func.count(distinct(GroupLogs.chat_id))).scalar() finally: SESSION.close()
def num_chats(): try: return SESSION.query(func.count(distinct(Notes.chat_id))).scalar() finally: SESSION.close()