コード例 #1
0
ファイル: bot.py プロジェクト: EvaisaGiac/twitch-bot
    def __init__(self,
                 settings=None,
                 ui_queues=None,
                 wrapper=None,
                 irc_wrapper=None,
                 logger=None,
                 wrap_irc=True):
        self.settings = settings
        self.wrapper = wrapper
        self.logger = logger
        self.ui_queues = ui_queues

        if irc_wrapper:
            iw = irc_wrapper(logger, self.wrapper, settings,
                             settings.CHANNEL_LIST, settings.USER,
                             settings.HOST, settings.OAUTH_TOKEN,
                             settings.PORT, settings.COMMAND_PREFIX)

            if wrap_irc:
                self.ircWrapper = ThreadCallRelay()
                self.ircWrapper.set_call_object(iw)
                iw.set_call_relay(self.ircWrapper)
            else:
                self.ircWrapper = iw
        else:
            self.ircWrapper = None

        self.command_managers = {}
        self.blacklist_managers = {}
        self.channel_models = {}
        self.db = None
コード例 #2
0
ファイル: twitchbot.py プロジェクト: EvaisaGiac/twitch-bot
def main():
    multiprocessing.freeze_support()
    ui_choices = get_ui_choices()

    default_ui = "Qt" if is_frozen() else "None"

    ap = argparse.ArgumentParser()
    ap.add_argument("--ui", default=default_ui, choices=ui_choices)

    options = ap.parse_args()

    ui, in_queue, out_queue = get_ui(options.ui)

    if not ui:
        raise RuntimeError("Couldn't instantiate UI {}".format(ui))

    process = multiprocessing.Process(
        target=start_ui, args=(ui,)
    )

    if options.ui != "None":
        process.start()

    if settings.LOG_FILE:
        set_log_file(settings.LOG_FILE)

    # Set LUA_PATH environment variable so our Lua code can find the libraries
    os.environ["LUA_PATH"] = settings.LUA_PATH

    ui_queues = {
        "in": in_queue,
        "out": out_queue
    }

    wrapper = ThreadCallRelay()
    bot = Bot(settings, ui_queues=ui_queues, wrapper=wrapper, irc_wrapper=IRCWrapper, logger=log)
    wrapper.set_call_object(bot)

    def run():
        bot.run()

    thread = Thread(target=run)
    thread.daemon = True
    thread.start()

    try:
        if USING_EXAMPLE:
            msg = "It seems you haven't edited all the important " \
                  "settings in settings.py. Please edit at least USER, " \
                  "OAUTH_TOKEN, and CHANNEL_LIST."
            for channel in settings.CHANNEL_LIST:
                ui_queues["in"].put(ConsoleMsg(channel, msg))

        if options.ui == "None":
            while True:
                time.sleep(1)
        else:
            running = True
            while running:
                msg = out_queue.get()
                if msg.__class__ == StopMsg:
                    running = False
                    wrapper.stop()
                else:
                    msg.set_bot(bot)
                    msg.process()
    finally:
        in_queue.put(StopMsg())
        wrapper.stop()

        if options.ui != "None":
            process.join()