diff options
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/admin.py | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/plugins/admin.py b/plugins/admin.py new file mode 100644 index 00000000..8f4e67a7 --- /dev/null +++ b/plugins/admin.py @@ -0,0 +1,51 @@ +from plugin import BasePlugin +from tabs import MucTab + +class Plugin(BasePlugin): + """ + Adds several convenient aliases to /affiliation and /role: + /visitor + /participant + /moderator == /op + /member == /voice + /owner + /admin + /noaffiliation + """ + def init(self): + for role in ['visitor', 'participant' , 'moderator']: + self.add_tab_command(MucTab, role, self.role(role), + '/%s <nick>\n%s: Set the role of a nick to %s.' % + (role, role.capitalize(), role), self.complete_nick) + + for aff in ['member', 'owner', 'admin']: + self.add_tab_command(MucTab, aff, self.affiliation(aff), + '/%s <nick>\n%s: set the affiliation of a nick to %s' % + (aff, aff.capitalize(), aff), self.complete_nick) + + self.add_tab_command(MucTab, 'noaffiliation', self.affiliation('none'), + '/noaffiliation <nick>\nNoAffiliation: set the affiliation of a nick to none.', + self.complete_nick) + self.add_tab_command(MucTab, 'voice', self.affiliation('member'), + '/voice <nick>\nVoice: set the affiliation of a nick to member.', + self.complete_nick) + self.add_tab_command(MucTab, 'op', self.role('moderator'), + '/op <nick>\nOp: set the role of a nick to moderator.', + self.complete_nick) + + def role(self, role): + return lambda args: self.core.current_tab().command_role(args+' '+role) + + def affiliation(self, affiliation): + return lambda args: self.core.current_tab().command_affiliation( + args+' '+affiliation) + + def complete_nick(self, the_input): + tab = self.core.current_tab() + compare_users = lambda x: x.last_talked + word_list = [user.nick for user in sorted(tab.users, key=compare_users, reverse=True)\ + if user.nick != tab.own_nick] + return the_input.auto_completion(word_list, '') + + + |