You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

70 lines
2.0 KiB

import asyncio
import configparser
import logging
import os
from commands import Commands
from clients.discord import DiscordClient
from clients.twitch import TwitchClient
TIMEOUT = 0.2
def main():
config = configparser.ConfigParser()
config.read('settings.cfg')
level = logging.DEBUG if bool(int(os.getenv('DEBUG', 0))) else logging.INFO
handler = logging.StreamHandler()
handler.setFormatter(logging.Formatter('CMD: %(levelname)s: %(message)s'))
commands_logger = logging.getLogger('commands')
commands_logger.addHandler(handler)
commands_logger.setLevel(level)
handler = logging.StreamHandler()
handler.setFormatter(logging.Formatter('DISCORD: %(levelname)s: %(message)s'))
discord_logger = logging.getLogger('discord')
discord_logger.addHandler(handler)
discord_logger.setLevel(level)
handler = logging.StreamHandler()
handler.setFormatter(logging.Formatter('TWITCH: %(levelname)s: %(message)s'))
twitch_logger = logging.getLogger('irc.client')
twitch_logger.addHandler(handler)
twitch_logger.setLevel(level)
commands = Commands(config, commands_logger)
async def run_twitch_client():
twitch_client = TwitchClient(config, twitch_logger, commands)
twitch_client.connect_()
while True:
try:
twitch_client.process_data()
await asyncio.sleep(TIMEOUT)
except Exception as e:
twitch_logger.info('Exception', exc_info=e)
async def run_discord_client():
discord_client = DiscordClient(config, discord_logger, commands)
while True:
try:
await discord_client.start_()
except Exception as e:
discord_logger.info('Exception', exc_info=e)
await discord_client.logout()
loop = asyncio.get_event_loop()
try:
asyncio.ensure_future(run_twitch_client())
asyncio.ensure_future(run_discord_client())
loop.run_forever()
finally:
loop.close()
if __name__ == "__main__":
main()