xdm/main.py
2025-12-25 14:39:18 +02:00

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()