54 lines
2.2 KiB
Python
54 lines
2.2 KiB
Python
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)
|
|
self.add_tab_command(MucTab, 'mute', self.role('visitor'),
|
|
'/mute <nick>\nMute: set the role of a nick to visitor.',
|
|
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, '')
|
|
|
|
|
|
|