#!/usr/bin/env python import argparse import asyncio import logging from scormod.client import ScorMod from scormod.cmd_serv import CommandServer from scormod.processors.messages import * # setting up argument parser parser = argparse.ArgumentParser(description='Le lou bot') parser.add_argument('--cookie', type=str, help='usercookie to use') parser.add_argument('--channel', type=str, help='channel to watch', default="") parser.add_argument('--domain', type=str, help='domain to connect to', default="loult.family") parser.add_argument('--port', type=int, help='port on which to connect the socket', default=80) parser.add_argument('--method', type=str, help='http or https', default="https") parser.add_argument('--verbose', help='print debug information', action='store_true') # setting up the various dispatchers cmds = [cmd_class(cococlient) for cmd_class in (CocoConnectCommand, CocoMsgCommand, CocoListCommand, CocoSwitchCommand, CocoQuitCommand, CocoBroadcastCommand)] help_cmd = BotHelp(cmds) coco_commands = CommandsDispatcherProcessor(cmds + [help_cmd], "coco", default_response="de?") root_messages_dispatcher = MessageDispatcher([coco_commands]) connections_dispatcher = ConnectionDispatcher([]) # TODO : add a TCP-socket-based command line interface # https://asyncio.readthedocs.io/en/latest/tcp_echo.html if __name__ == "__main__": args = parser.parse_args() if args.verbose: logging.getLogger().setLevel(logging.DEBUG) logging.getLogger("websockets").setLevel(logging.INFO) else: logging.getLogger().setLevel(logging.INFO) scormod = ScorMod(args.cookie, args.channel, args.domain, args.port, args.method, root_messages_dispatcher, connections_dispatcher) command_server = CommandServer() loop = asyncio.get_event_loop() loop.run_until_complete(scormod.run())