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.
48 lines
1.9 KiB
48 lines
1.9 KiB
#!/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()) |
|
|
|
|