68 lines
1.4 KiB
Python
68 lines
1.4 KiB
Python
import asyncio
|
|
import signal
|
|
import sys
|
|
from os import getenv
|
|
|
|
from twisted.internet import asyncioreactor
|
|
|
|
import util
|
|
from sources.ch4 import Chan4
|
|
from sources.dis import DiscordClient
|
|
|
|
loop = asyncio.new_event_loop()
|
|
# asyncio.set_event_loop(loop)
|
|
|
|
|
|
# asyncioreactor.install(asyncio.new_event_loop())
|
|
asyncioreactor.install(loop) # noqa
|
|
from twisted.internet import reactor, task # noqa
|
|
|
|
|
|
# Doesn't quite work but better than nothing
|
|
def stop(*args):
|
|
loop.stop()
|
|
reactor.stop()
|
|
sys.exit()
|
|
|
|
|
|
signal.signal(signal.SIGINT, stop)
|
|
# loop.add_signal_handler(signal.SIGINT, functools.partial(stop, loop))
|
|
# For development
|
|
if not getenv("DISCORD_TOKEN", None):
|
|
from dotenv import load_dotenv
|
|
|
|
load_dotenv()
|
|
|
|
log = util.get_logger("monolith")
|
|
|
|
modules_enabled = getenv("MODULES_ENABLED", False)
|
|
|
|
token = getenv("DISCORD_TOKEN", None)
|
|
if not token:
|
|
raise Exception("No Discord token provided")
|
|
|
|
|
|
async def start():
|
|
log.info("Starting Discord handler.")
|
|
client = DiscordClient(loop=loop)
|
|
loop.create_task(client.start(token))
|
|
|
|
log.info("Starting 4chan handler.")
|
|
chan = Chan4()
|
|
running = chan.run()
|
|
deferred = task.ensureDeferred(running)
|
|
reactor.callLater(0.1, deferred.callback, "")
|
|
|
|
|
|
loop.create_task(start())
|
|
|
|
|
|
# reactor.run()
|
|
reactor.run()
|
|
try:
|
|
loop.run_forever()
|
|
except KeyboardInterrupt:
|
|
log.info("Process terminating")
|
|
finally:
|
|
loop.close()
|