Download:
child 3:12c6cbab21e4
parent 1:e7b3233bb582
2:11e99d62ba12
Anton Shestakov <av6@dwimlabs.net>, Mon, 09 May 2016 21:25:51 +0800
rollbot: join rooms when invited

1 файлов изменено, 19 вставок(+), 2 удалений(-) [+]
rollbot.py file | annotate | diff | comparison | revisions
--- a/rollbot.py Mon May 09 21:24:39 2016 +0800
+++ b/rollbot.py Mon May 09 21:25:51 2016 +0800
@@ -14,34 +14,51 @@
class RollBot(sleekxmpp.ClientXMPP):
- def __init__(self, jid, password):
+ def __init__(self, jid, password, nick):
sleekxmpp.ClientXMPP.__init__(self, jid, password)
+ self.nick = nick
+
self.add_event_handler('session_start', self.start)
+ self.add_event_handler('groupchat_invite', self.muc_invite)
+ self.add_event_handler('groupchat_direct_invite', self.muc_direct_invite)
def start(self, event):
self.get_roster()
self.send_presence()
+ def muc_invite(self, invite):
+ room = invite['from']
+ password = '' # https://github.com/fritzy/SleekXMPP/issues/409
+ self.plugin['xep_0045'].joinMUC(room, self.nick, password=password, wait=True)
+
+ def muc_direct_invite(self, invite):
+ room = invite['groupchat_invite']['jid']
+ password = invite['groupchat_invite']['password']
+ self.plugin['xep_0045'].joinMUC(room, self.nick, password=password, wait=True)
+
def main():
parser = ArgumentParser()
parser.add_argument('-j', '--jid', dest='jid', help='JID to use')
parser.add_argument('-p', '--password', dest='password', help='password to use')
+ parser.add_argument('-n', '--nick', dest='nick', help='MUC nickname', default='rollbot')
parser.add_argument('-d', '--debug', help='set logging to DEBUG', action='store_const', dest='loglevel', const=logging.DEBUG, default=logging.INFO)
args = parser.parse_args()
logging.basicConfig(level=args.loglevel, format='%(asctime)s %(levelname)-8s %(message)s')
- rollbot = RollBot(args.jid, args.password)
+ rollbot = RollBot(args.jid, args.password, args.nick)
rollbot.auto_authorize = True
rollbot.auto_subscribe = True
rollbot.register_plugin('xep_0030') # Service Discovery
+ rollbot.register_plugin('xep_0045') # Multi-User Chat
rollbot.register_plugin('xep_0092') # Software Version
rollbot.register_plugin('xep_0199') # XMPP Ping
rollbot.register_plugin('xep_0202') # Entity Time
+ rollbot.register_plugin('xep_0249') # Direct MUC Invitations
if rollbot.connect():
logging.info('RollBot connected')