summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--plugins/admin.py51
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, '')
+
+
+