36 lines
918 B
Python
36 lines
918 B
Python
import os, re, hashlib, sys, traceback
|
|
import asyncio
|
|
|
|
import gateway_xmpp
|
|
import gateway_discord
|
|
|
|
import settings
|
|
|
|
class Plexus:
|
|
def __init__(self):
|
|
self.pubsub_callbacks = {}
|
|
|
|
def sub(self, event_name, callback):
|
|
if event_name not in self.pubsub_callbacks:
|
|
self.pubsub_callbacks[event_name] = []
|
|
self.pubsub_callbacks[event_name].append(callback)
|
|
|
|
def pub(self, event_name, *args):
|
|
print(event_name, args)
|
|
if event_name in self.pubsub_callbacks:
|
|
for callback in self.pubsub_callbacks[event_name]:
|
|
try:
|
|
callback(*args)
|
|
except e:
|
|
print(traceback.format_exc())
|
|
PLEXUS = Plexus()
|
|
|
|
for name, data in settings.XMPPs.items():
|
|
data["handler"] = gateway_xmpp.GatewayXMPP(PLEXUS, settings, name, data)
|
|
for name, data in settings.DISCORDs.items():
|
|
data["handler"] = gateway_discord.GatewayDiscord(PLEXUS, settings, name, data)
|
|
|
|
PLEXUS.pub("ready")
|
|
|
|
asyncio.get_event_loop().run_forever()
|