def init(): global stopped stopped = False global loggers for (botname, channel) in cfg.get("channels"): enablelogging(botname, channel) callbacks.add("PRIVMSG", chatlogcb, prechatlogcb) callbacks.add("JOIN", chatlogcb, prechatlogcb) callbacks.add("PART", chatlogcb, prechatlogcb) callbacks.add("NOTICE", chatlogcb, prechatlogcb) callbacks.add("QUIT", chatlogcb, prechatlogcb) callbacks.add("NICK", chatlogcb, prechatlogcb) callbacks.add("PRESENCE", chatlogcb, prechatlogcb) callbacks.add("MESSAGE", chatlogcb, prechatlogcb) callbacks.add("CONSOLE", chatlogcb, prechatlogcb) first_callbacks.add("OUTPUT", chatlogcb, prechatlogcb) return 1
def init(): """ called upon plugin registration. """ global stopped stopped = False global loggers for (botname, channel) in cfg.get("channels"): enablelogging(botname, channel) callbacks.add("PRIVMSG", chatlogcb, prechatlogcb) callbacks.add("JOIN", chatlogcb, prechatlogcb) callbacks.add("PART", chatlogcb, prechatlogcb) callbacks.add("NOTICE", chatlogcb, prechatlogcb) callbacks.add("QUIT", chatlogcb, prechatlogcb) callbacks.add("NICK", chatlogcb, prechatlogcb) callbacks.add("PRESENCE", chatlogcb, prechatlogcb) callbacks.add("MESSAGE", chatlogcb, prechatlogcb) callbacks.add("CONSOLE", chatlogcb, prechatlogcb) callbacks.add("CONVORE", chatlogcb, prechatlogcb) first_callbacks.add("OUTPUT", chatlogcb, prechatlogcb) return 1
def init(): """ called upon plugin registration. """ global stopped stopped = False global loggers fleet = getfleet() got = False for (botname, channel) in cfg.get("channels"): if fleet.byname(botname): enablelogging(botname, channel) ; got = True #if not got: return callbacks.add("PRIVMSG", chatlogcb, prechatlogcb) callbacks.add("JOIN", chatlogcb, prechatlogcb) callbacks.add("PART", chatlogcb, prechatlogcb) callbacks.add("NOTICE", chatlogcb, prechatlogcb) callbacks.add("QUIT", chatlogcb, prechatlogcb) callbacks.add("NICK", chatlogcb, prechatlogcb) callbacks.add("PRESENCE", chatlogcb, prechatlogcb) callbacks.add("MESSAGE", chatlogcb, prechatlogcb) callbacks.add("CONSOLE", chatlogcb, prechatlogcb) first_callbacks.add("OUTPUT", chatlogcb, prechatlogcb) get_hooks.register("/api/log", api_log) return 1
## jsb imports from jsb.lib.commands import cmnds from jsb.lib.examples import examples from jsb.lib.callbacks import callbacks, first_callbacks ## basic imports import logging ## echo callback def echopre(bot, event): if event.how != "background" and bot.type == "web" and not event.forwarded and not event.cbtype == "OUTPUT": return True return False def echocb(bot, event): bot.outnocb(event.channel, u"[%s] %s" % (event.nick, event.txt), event=event, dotime=False) first_callbacks.add("DISPATCH", echocb, echopre) ## echo command def handle_echo(bot, event): """ echo txt to user. """ if event.how != "background" and not event.iscmnd() and not event.isremote: if not event.isdcc: bot.saynocb(event.channel, u"[%s] %s" % (event.nick, event.txt)) cmnds.add("echo", handle_echo, ['OPER']) examples.add("echo", "echo input", "echo yoooo dudes")
def handle_coloradd(bot, event): try: (txt, color) = event.rest.rsplit(" ", 1) except (TypeError, ValueError): event.missing("<txt> <color>") ; return state.data.colormapping[txt] = color.upper() state.save() event.reply("color of %s set to %s" % (txt, color)) cmnds.add("color-add", handle_coloradd, ["OPER"]) examples.add("color-add", "add a text color replacement to the morphs", "color-add dunker 8") ## color-del command def handle_colordel(bot, event): if not event.rest: event.missing("<txt>") ; return try: del state.data.colormapping[event.rest] ; state.save() except KeyError: event.reply("we are not morphing %s" % event.rest) event.reply("color removed for %s" % event.rest) cmnds.add("color-del", handle_colordel, ["OPER"]) examples.add("color-del", "remove a text color replacement from the morphs", "color-del dunker") ## start def init(): outputmorphs.add(docolormorph) def bogus(bot, event): pass first_callbacks.add("START", bogus)
# initialize crypt object if udpseed is set in config if cfg['udp'] and cfg['udpseed']: crypt = rijndael(cfg['udpseed']) def init(): """ init the udp plugin. """ if cfg['udp']: global udplistener start_new_thread(udplistener._listen, ()) start_new_thread(udplistener._handleloop, ()) start_new_thread(udplistener._outloop, ()) return 1 ## shutdown def shutdown(): """ shutdown the udp plugin. """ global udplistener if udplistener: udplistener.stop = 1 udplistener.outqueue.put_nowait((None, None)) udplistener.queue.put_nowait((None, None)) return 1 ## start def onSTART(bot, event): pass first_callbacks.add("START", onSTART)
state.data.colormapping[txt] = c state.save() event.reply("color of %s set to %s" % (txt, c)) cmnds.add("color-add", handle_coloradd, ["OPER"]) examples.add("color-add", "add a text color replacement to the morphs", "color-add dunker 8") ## color-del command def handle_colordel(bot, event): """ arguments: <txt> - remove color mapping. """ if not event.rest: event.missing("<txt>") ; return try: del state.data.colormapping[event.rest] ; state.save() except KeyError: event.reply("we are not morphing %s" % event.rest) event.reply("color removed for %s" % event.rest) cmnds.add("color-del", handle_colordel, ["OPER"]) examples.add("color-del", "remove a text color replacement from the morphs", "color-del dunker") ## start def init(): """ init the colors plugin, add the colormorph. """ outputmorphs.add(docolormorph) def bogus(bot, event): """ bogus startup function to load the color morph on startup. """ pass first_callbacks.add("START", bogus)
if jid == "twitter": try: postmsg(forward.data.outs[jid], e.txt) except Exception, ex: handle_exception() continue outbot = fleet.getfirstjabber(bot.isgae) if not outbot and bot.isgae: outbot = fleet.makebot('xmpp', 'forwardbot') if outbot: e.source = outbot.cfg.user txt = outbot.normalize(e.tojson()) txt = stripcolor(txt) #txt = e.tojson() container = Container(outbot.cfg.user, txt) outbot.outnocb(jid, container.tojson()) else: logging.info("forward - no xmpp bot found in fleet".upper()) first_callbacks.add('BLIP_SUBMITTED', forwardoutcb, forwardoutpre) first_callbacks.add('MESSAGE', forwardoutcb, forwardoutpre) #first_callbacks.add('PRESENCE', forwardoutcb, forwardoutpre) first_callbacks.add('PRIVMSG', forwardoutcb, forwardoutpre) first_callbacks.add('JOIN', forwardoutcb, forwardoutpre) first_callbacks.add('PART', forwardoutcb, forwardoutpre) first_callbacks.add('QUIT', forwardoutcb, forwardoutpre) first_callbacks.add('NICK', forwardoutcb, forwardoutpre) first_callbacks.add('CONSOLE', forwardoutcb, forwardoutpre) first_callbacks.add('WEB', forwardoutcb, forwardoutpre) first_callbacks.add('DISPATCH', forwardoutcb, forwardoutpre) first_callbacks.add('OUTPUT', forwardoutcb, forwardoutpre) first_callbacks.add('TORNADO', forwardoutcb, forwardoutpre) ## forward-add command
else: logging.info("can't find bot for (%s,%s,%s)" % (botname, type, target)) except Exception, ex: handle_exception() except KeyError: pass # MORE CORE BUSINESS # this is the place where the callbacks get registered. The first argument is # the string representation of the event type, MESSAGE is for jabber message, # EXEC is for the gadget handling, WEB for the website and # OUTPUT for the outputcache. first_callbacks.add('MESSAGE', relaycallback, relayprecondition) first_callbacks.add('NOTICE', relaycallback, relayprecondition) first_callbacks.add('EXEC', relaycallback, relayprecondition) first_callbacks.add('OUTPUT', relaycallback, relayprecondition) first_callbacks.add('PRIVMSG', relaycallback, relayprecondition) first_callbacks.add('TORNADO', relaycallback, relayprecondition) ## COMMANDS # this is where the commands for the relay plugin are defined, Arguments to a # command function are the bot that the event occured on and the event that # triggered the command. Think the code speaks for itself here ;] ## relay command
## echo callback def echopre(bot, event): if event.how != "background" and bot.type == "web" and not event.forwarded and not event.cbtype == "OUTPUT": return True return False def echocb(bot, event): bot.outnocb(event.channel, u"[%s] %s" % (event.nick, event.txt), event=event, dotime=False) first_callbacks.add("DISPATCH", echocb, echopre) ## echo command def handle_echo(bot, event): """ echo txt to user. """ if event.how != "background" and not event.iscmnd() and not event.isremote: if not event.isdcc: bot.saynocb(event.channel, u"[%s] %s" % (event.nick, event.txt)) cmnds.add("echo", handle_echo, ['OPER']) examples.add("echo", "echo input", "echo yoooo dudes")
# initialize crypt object if udpseed is set in config if cfg['udp'] and cfg['udpseed']: crypt = rijndael(cfg['udpseed']) def init(): """ init the udp plugin. """ if cfg['udp']: global udplistener start_new_thread(udplistener._listen, ()) start_new_thread(udplistener._handleloop, ()) start_new_thread(udplistener._outloop, ()) return 1 def shutdown(): """ shutdown the udp plugin. """ global udplistener if udplistener: udplistener.stop = 1 udplistener.outqueue.put_nowait((None, None)) udplistener.queue.put_nowait((None, None)) return 1 def onSTART(bot, event): pass first_callbacks.add("START", onSTART)
except Exception, ex: handle_exception() continue outbot = fleet.getfirstjabber() if outbot: e.source = outbot.cfg.user txt = outbot.normalize(e.tojson()) txt = stripcolor(txt) #txt = e.tojson() container = Container(outbot.cfg.user, txt) outbot.outnocb(jid, container.tojson()) else: logging.info("forward - no xmpp bot found in fleet".upper()) first_callbacks.add('MESSAGE', forwardoutcb, forwardoutpre) #first_callbacks.add('PRESENCE', forwardoutcb, forwardoutpre) first_callbacks.add('PRIVMSG', forwardoutcb, forwardoutpre) first_callbacks.add('JOIN', forwardoutcb, forwardoutpre) first_callbacks.add('PART', forwardoutcb, forwardoutpre) first_callbacks.add('QUIT', forwardoutcb, forwardoutpre) first_callbacks.add('NICK', forwardoutcb, forwardoutpre) first_callbacks.add('CONSOLE', forwardoutcb, forwardoutpre) first_callbacks.add('WEB', forwardoutcb, forwardoutpre) first_callbacks.add('DISPATCH', forwardoutcb, forwardoutpre) first_callbacks.add('OUTPUT', forwardoutcb, forwardoutpre) first_callbacks.add('TORNADO', forwardoutcb, forwardoutpre) ## forward-add command
if event: t = "[%s]" % outbot.cfg.nick logging.debug("sending to %s (%s)" % (target, outbot.cfg.name)) txt = outbot.normalize(txt) txt = stripcolor(txt) outbot.outnocb(target, txt, "normal", event=e) else: logging.info("can't find bot for (%s,%s,%s)" % (botname, type, target)) except Exception, ex: handle_exception() except KeyError: pass # MORE CORE BUSINESS # this is the place where the callbacks get registered. The first argument is # the string representation of the event type, MESSAGE is for jabber message, # EXEC is for the gadget handling, WEB for the website, BLIP_SUBMITTED for # wave and OUTPUT for the outputcache (both used in wave and web). first_callbacks.add('MESSAGE', relaycallback, relayprecondition) first_callbacks.add('EXEC', relaycallback, relayprecondition) first_callbacks.add('WEB', relaycallback, relayprecondition) first_callbacks.add('BLIP_SUBMITTED', relaycallback, relayprecondition) first_callbacks.add('OUTPUT', relaycallback, relayprecondition) first_callbacks.add('PRIVMSG', relaycallback, relayprecondition) first_callbacks.add('CONVORE', relaycallback, relayprecondition) first_callbacks.add('TORNADO', relaycallback, relayprecondition) ## COMMANDS # this is where the commands for the relay plugin are defined, Arguments to a # command function are the bot that the event occured on and the event that # triggered the command. Think the code speaks for itself here ;] ## relay command
if event: t = "[%s]" % outbot.cfg.nick logging.debug("sending to %s (%s)" % (target, outbot.cfg.name)) txt = outbot.normalize(txt) txt = stripcolor(txt) outbot.putonqueue(-1, target, txt, "normal", event=e) else: logging.info("can't find bot for (%s,%s,%s)" % (botname, type, target)) except Exception, ex: handle_exception() except KeyError: pass # MORE CORE BUSINESS # this is the place where the callbacks get registered. The first argument is # the string representation of the event type, MESSAGE is for jabber message, # EXEC is for the gadget handling, WEB for the website and # OUTPUT for the outputcache. first_callbacks.add('MESSAGE', relaycallback, relayprecondition) first_callbacks.add('NOTICE', relaycallback, relayprecondition) first_callbacks.add('EXEC', relaycallback, relayprecondition) first_callbacks.add('OUTPUT', relaycallback, relayprecondition) first_callbacks.add('PRIVMSG', relaycallback, relayprecondition) first_callbacks.add('TORNADO', relaycallback, relayprecondition) ## COMMANDS # this is where the commands for the relay plugin are defined, Arguments to a # command function are the bot that the event occured on and the event that # triggered the command. Think the code speaks for itself here ;] ## relay command def handle_relay(bot, event):
logging.info("watcher - %s - %s" % (event.channel, str(subscribers))) for item in subscribers: try: try: (botname, type, channel) = item except ValueError: continue if not event.allowatch: pass elif channel not in event.allowwatch: logging.warn("watcher - allowwatch denied %s - %s" % (channel, event.allowwatch)) ; continue m = formatevent(bot, event, subscribers, True) if event.cbtype in ['OUTPUT', 'JOIN', 'PART', 'QUIT', 'NICK']: txt = u"[!] %s" % m.txt else: txt = u"[%s] %s" % (m.nick or event.nick or event.auth, m.txt) if txt.count('] [') > 2: logging.debug("watcher - %s - skipping %s" % (type, txt)) ; continue logging.warn("watcher - forwarding to %s" % channel) writeout(botname, type, channel, txt, event.tojson()) except Exception, ex: handle_exception() first_callbacks.add('PRIVMSG', watchcallback, prewatchcallback) first_callbacks.add('JOIN', watchcallback, prewatchcallback) first_callbacks.add('PART', watchcallback, prewatchcallback) first_callbacks.add('QUIT', watchcallback, prewatchcallback) first_callbacks.add('NICK', watchcallback, prewatchcallback) first_callbacks.add('OUTPUT', watchcallback, prewatchcallback) first_callbacks.add('MESSAGE', watchcallback, prewatchcallback) first_callbacks.add('CONSOLE', watchcallback, prewatchcallback) first_callbacks.add('WEB', watchcallback, prewatchcallback) first_callbacks.add('DISPATCH', watchcallback, prewatchcallback) first_callbacks.add('TORNADO', watchcallback, prewatchcallback) ## watcher-start command def handle_watcherstart(bot, event): """ arguments: [<channel>] - start watching a target channel. """
except Exception, ex: handle_exception() continue outbot = fleet.getfirstjabber() if outbot: e.source = outbot.cfg.user txt = outbot.normalize(e.tojson()) txt = stripcolor(txt) # txt = e.tojson() container = Container(outbot.cfg.user, txt) outbot.outnocb(jid, container.tojson()) else: logging.info("forward - no xmpp bot found in fleet".upper()) first_callbacks.add("MESSAGE", forwardoutcb, forwardoutpre) # first_callbacks.add('PRESENCE', forwardoutcb, forwardoutpre) first_callbacks.add("PRIVMSG", forwardoutcb, forwardoutpre) first_callbacks.add("JOIN", forwardoutcb, forwardoutpre) first_callbacks.add("PART", forwardoutcb, forwardoutpre) first_callbacks.add("QUIT", forwardoutcb, forwardoutpre) first_callbacks.add("NICK", forwardoutcb, forwardoutpre) first_callbacks.add("CONSOLE", forwardoutcb, forwardoutpre) first_callbacks.add("WEB", forwardoutcb, forwardoutpre) first_callbacks.add("DISPATCH", forwardoutcb, forwardoutpre) first_callbacks.add("OUTPUT", forwardoutcb, forwardoutpre) first_callbacks.add("TORNADO", forwardoutcb, forwardoutpre) ## forward-add command
outbot.outnocb(target, txt, event=event) else: logging.error("can't find %s bot" % type) except Exception, ex: handle_exception() except KeyError: pass # MORE CORE BUSINESS # this is the place where the callbacks get registered. The first argument is # the string representation of the event type, MESSAGE is for jabber message, # EXEC is for the gadget handling, WEB for the website, BLIP_SUBMITTED for # wave and OUTPUT for the outputcache (both used in wave and web). first_callbacks.add('MESSAGE', relaycallback, relayprecondition) first_callbacks.add('EXEC', relaycallback, relayprecondition) first_callbacks.add('WEB', relaycallback, relayprecondition) first_callbacks.add('BLIP_SUBMITTED', relaycallback, relayprecondition) first_callbacks.add('OUTPUT', relaycallback, relayprecondition) first_callbacks.add('PRIVMSG', relaycallback, relayprecondition) # COMMANDS # this is where the commands for the relay plugin are defined, Arguments to a # command function are the bot that the event occured on and the event that # triggered the command. Think the code speaks for itself here ;] def handle_relayclone(bot, event): """ clone relays from one channel to the other. """ new = event.origin or event.channel