예제 #1
0
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']
		# 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, 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
예제 #2
0
def add_to_blacklist(chat_id, trigger):
    with BLACKLIST_FILTER_INSERTION_LOCK:
        blacklist_filt = BlackListFilters(str(chat_id), trigger)

        SESSION.merge(blacklist_filt)  # merge to avoid duplicate key issues
        SESSION.commit()
        CHAT_BLACKLISTS.setdefault(str(chat_id), set()).add(trigger)
예제 #3
0
def blacklist_url(chat_id, domain):
    with URL_BLACKLIST_FILTER_INSERTION_LOCK:
        domain_filt = URLBlackListFilters(str(chat_id), domain)

        SESSION.merge(domain_filt)
        SESSION.commit()
        CHAT_URL_BLACKLISTS.setdefault(str(chat_id), set()).add(domain)
예제 #4
0
def whitelistChat(chat_id):
    with ALLOWCHATLOCK:
        chat = SESSION.query(AllowedChat).get(chat_id)
        if not chat:
            chat = AllowedChat(chat_id)
            SESSION.merge(chat)
        SESSION.commit()
        __load_whitelisted_chats_list()
예제 #5
0
def blacklistChat(chat_id):
    with BANCHATLOCK:
        chat = SESSION.query(BannedChat).get(chat_id)
        if not chat:
            chat = BannedChat(chat_id)
            SESSION.merge(chat)
        SESSION.commit()
        __load_blacklisted_chats_list()
예제 #6
0
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()
예제 #7
0
def add_to_userlist(chat_id, user_id):
    with UR_LOCK:
        user_filt = UserRestirect(str(chat_id), user_id)

        SESSION.merge(user_filt)  # merge to avoid duplicate key issues
        SESSION.commit()
        global CHAT_USERRESTIRECT
        if CHAT_USERRESTIRECT.get(str(chat_id), set()) == set():
            CHAT_USERRESTIRECT[str(chat_id)] = {user_id}
        else:
            CHAT_USERRESTIRECT.get(str(chat_id), set()).add(user_id)
예제 #8
0
def update_gmute_reason(user_id, name, reason=None):
    with GMUTED_USERS_LOCK:
        user = SESSION.query(GloballyMutedUsers).get(user_id)
        if not user:
            return False
        user.name = name
        user.reason = reason

        SESSION.merge(user)
        SESSION.commit()
        return True
예제 #9
0
def gpromote_user(user_id, name):
    with SUDO_USERS_LOCK:
        user = SESSION.query(SudoUsers).get(user_id)
        if not user:
            user = SudoUsers(user_id, name)
        else:
            user.name = name

        SESSION.merge(user)
        SESSION.commit()
        __load_sudo_userid_list()
예제 #10
0
def update_gban_reason(user_id, name, reason=None):
    with GBANNED_USERS_LOCK:
        user = SESSION.query(GloballyBannedUsers).get(user_id)
        if not user:
            return None
        old_reason = user.reason
        user.name = name
        user.reason = reason

        SESSION.merge(user)
        SESSION.commit()
        return old_reason
예제 #11
0
def gban_user(user_id, name, reason=None):
    with GBANNED_USERS_LOCK:
        user = SESSION.query(GloballyBannedUsers).get(user_id)
        if not user:
            user = GloballyBannedUsers(user_id, name, reason)
        else:
            user.name = name
            user.reason = reason

        SESSION.merge(user)
        SESSION.commit()
        __load_gbanned_userid_list()
예제 #12
0
def set_frules(fed_id, rules):
	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 = str(rules)
		# Set user
		FEDERATION_BYOWNER[str(owner_id)]['frules'] = fed_rules
		FEDERATION_BYFEDID[str(fed_id)]['frules'] = fed_rules
		FEDERATION_BYNAME[fed_name]['frules'] = fed_rules
		# Set on database
		fed = Federations(str(owner_id), fed_name, str(fed_id), fed_rules, str(fed_members))
		SESSION.merge(fed)
		SESSION.commit()
		return True
예제 #13
0
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']
		# 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, str({'owner': str(owner_id), 'members': str(members)}))
		SESSION.merge(fed)
		SESSION.commit()
		__load_all_feds_chats()
		return True
예제 #14
0
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']
        # 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,
            str({
                'owner': str(owner_id),
                'members': str(members)
            }))
        SESSION.merge(fed)
        SESSION.commit()
        return True
예제 #15
0
def ensure_bot_in_db():
    with INSERTION_LOCK:
        bot = Users(BotID, BotUsername)
        SESSION.merge(bot)
        SESSION.commit()
예제 #16
0
def ensure_bot_in_db():
    with INSERTION_LOCK:
        bot = Users(dispatcher.bot.id, dispatcher.bot.username)
        SESSION.merge(bot)
        SESSION.commit()