1
Fork 0
mirror of https://github.com/RYGhub/royalnet.git synced 2025-02-17 10:53:57 +00:00
royalnet/bots.py

70 lines
2.9 KiB
Python
Raw Normal View History

2017-10-30 13:45:38 +01:00
import multiprocessing
import telegrambot
import discordbot
2018-09-05 19:48:34 +02:00
import redditbot
2018-09-19 00:12:07 +02:00
import statsupdate
2018-01-20 15:28:04 +01:00
import time
2018-08-16 19:33:38 +02:00
import logging
2018-09-18 00:26:01 +02:00
import coloredlogs
2018-09-19 00:12:07 +02:00
import os
2018-09-19 00:02:39 +02:00
logging.getLogger().disabled = True
2018-09-18 00:27:17 +02:00
logger = logging.getLogger(__name__)
2018-09-19 00:13:41 +02:00
os.environ["COLOREDLOGS_LOG_FORMAT"] = "%(asctime)s %(levelname)s %(name)s %(message)s"
2018-09-18 00:27:17 +02:00
coloredlogs.install(level="DEBUG", logger=logger)
2017-10-30 13:45:38 +01:00
2017-11-15 10:48:58 +01:00
discord_telegram_pipe = multiprocessing.Pipe()
2018-09-19 18:28:40 +02:00
discord = multiprocessing.Process(target=discordbot.process, args=(discord_telegram_pipe[0],))
telegram = multiprocessing.Process(target=telegrambot.process, args=(discord_telegram_pipe[1],))
reddit = multiprocessing.Process(target=redditbot.process)
stats = multiprocessing.Process(target=statsupdate.process)
2017-10-30 13:45:38 +01:00
if __name__ == "__main__":
2018-09-19 00:02:39 +02:00
logger.info("Starting Discord Bot process...")
2017-10-30 13:45:38 +01:00
discord.start()
2018-09-19 00:02:39 +02:00
logger.info("Starting Telegram Bot process...")
2017-11-10 08:53:48 +01:00
telegram.start()
2018-09-19 00:02:39 +02:00
logger.info("Starting Reddit Bot process...")
2018-09-05 19:52:11 +02:00
reddit.start()
2018-09-19 00:12:07 +02:00
logger.info("Starting StatsUpdate process...")
2018-09-18 00:07:00 +02:00
stats.start()
try:
while True:
if discord.exitcode is not None:
2018-09-19 00:02:39 +02:00
logger.warning(f"Discord Bot exited with {discord.exitcode}")
del discord
2018-09-19 00:02:39 +02:00
logger.info("Restarting Discord Bot process...")
2018-09-19 18:28:40 +02:00
discord = multiprocessing.Process(target=discordbot.process, args=(discord_telegram_pipe[0],))
discord.start()
if telegram.exitcode is not None:
2018-09-19 00:02:39 +02:00
logger.warning(f"Telegram Bot exited with {telegram.exitcode}")
del telegram
2018-09-19 18:28:40 +02:00
telegram = multiprocessing.Process(target=telegrambot.process, args=(discord_telegram_pipe[1],))
2018-09-19 00:02:39 +02:00
logger.info("Restarting Telegram Bot process...")
2018-09-05 19:48:34 +02:00
telegram.start()
if reddit.exitcode is not None:
2018-09-19 00:02:39 +02:00
logger.warning(f"Reddit Bot exited with {reddit.exitcode}")
2018-09-05 19:48:34 +02:00
del reddit
2018-09-19 18:28:40 +02:00
reddit = multiprocessing.Process(target=redditbot.process)
2018-09-19 00:02:39 +02:00
logger.info("Restarting Reddit Bot process...")
2018-09-18 00:07:00 +02:00
reddit.start()
if stats.exitcode is not None:
2018-09-19 00:02:39 +02:00
logger.warning(f"StatsUpdater exited with {stats.exitcode}")
2018-09-18 00:07:00 +02:00
del stats
2018-09-19 18:28:40 +02:00
stats = multiprocessing.Process(target=statsupdate.process)
2018-09-19 00:12:07 +02:00
logger.info("Restarting StatsUpdate process...")
2018-09-18 00:07:00 +02:00
stats.start()
2018-08-16 19:33:38 +02:00
time.sleep(10)
except KeyboardInterrupt:
2018-09-19 00:02:39 +02:00
logger.info("Now stopping...")
logger.info("Asking Discord process to stop...")
2018-09-19 18:24:01 +02:00
discord_telegram_pipe[1].send("stop")
2018-09-19 00:02:39 +02:00
logger.info("Waiting for Discord Bot process to stop...")
2018-09-18 00:07:00 +02:00
discord.join()
2018-09-19 00:02:39 +02:00
logger.info("Waiting for Telegram Bot process to stop...")
2018-09-18 00:07:00 +02:00
telegram.join()
2018-09-19 00:02:39 +02:00
logger.info("Waiting for Reddit Bot process to stop...")
2018-09-18 00:07:00 +02:00
reddit.join()
2018-09-19 00:12:07 +02:00
logger.info("Waiting for StatsUpdate process to stop...")
2018-09-18 00:07:00 +02:00
stats.join()