def invoke(update, context, _): # Ignore unprivileged people who = Permissions.e_whois(update) if not Permissions.is_user(who): return # If /help admin was requested admin_mods = Permissions.admin_modules() if Permissions.is_admin and len(context.args) > 0: if context.args[0] == 'admin': help_admin(update, admin_mods) return # Get descriptions of the loaded modules that the user may invoke mods = set(Loader.loaded()) & set(Permissions.user_modules(who)) mods -= set(['start', 'logout']) mod_list = list(mods - admin_mods) if who != raw_whois(update): mod_list.append('logout') descs = ['/' + i + ': ' + Permissions.info(i) for i in mod_list] # Reply if Permissions.is_admin(who): descs.insert(0, 'Admin: /help admin for admin modules') reply(update, '@' + who + ' may use:' + djoin(descs))
def invoke(update, *_): # raw_user should not be able to log out e_user raw_user = raw_whois(update) if raw_user == Permissions.e_whois(update): raise DispatcherHandlerContinue # If invoked by e_user try: Permissions.remove_user_translation(raw_user) reply(update, 'Success') except AssertionError as err: logging.error(str(err)) reply(update, 'Error: ' + str(err))
def invoke(update, context, _): if 'logout' not in Loader.loaded(): reply(update, 'Refusing to login, logout module is not loaded') return try: user = Permissions.e_whois(update) new_u = context.args[0] try: Permissions.add_user_translation(user, new_u) msg = '@' + user + ' logged in as @' + new_u logging.info(msg) reply(update, msg) except AssertionError as err: reply(update, 'Error: ' + str(err)) except IndexError: reply(update, 'usage: /login <user>')