|
- # encoding:utf-8
-
- import os
- import signal
- import sys
-
- from channel import channel_factory
- from common import const
- from config import load_config
- from plugins import *
- import threading
-
-
- def sigterm_handler_wrap(_signo):
- old_handler = signal.getsignal(_signo)
-
- def func(_signo, _stack_frame):
- logger.info("signal {} received, exiting...".format(_signo))
- conf().save_user_datas()
- if callable(old_handler): # check old_handler
- return old_handler(_signo, _stack_frame)
- sys.exit(0)
-
- signal.signal(_signo, func)
-
-
- def run():
- try:
- # load config
- load_config()
- # ctrl + c
- sigterm_handler_wrap(signal.SIGINT)
- # kill signal
- sigterm_handler_wrap(signal.SIGTERM)
-
- # create channel
- channel_name = conf().get("channel_type", "wx")
-
- if "--cmd" in sys.argv:
- channel_name = "terminal"
-
- if channel_name == "wxy":
- os.environ["WECHATY_LOG"] = "warn"
- # os.environ['WECHATY_PUPPET_SERVICE_ENDPOINT'] = '127.0.0.1:9001'
-
- channel = channel_factory.create_channel(channel_name)
- if channel_name in ["wx", "wxy", "terminal", "wechatmp", "wechatmp_service", "wechatcom_app", "wework", const.FEISHU]:
- PluginManager().load_plugins()
-
- if conf().get("use_linkai"):
- try:
- from common import linkai_client
- threading.Thread(target=linkai_client.start, args=(channel, )).start()
- except Exception as e:
- pass
-
- # startup channel
- channel.startup()
-
- except Exception as e:
- logger.error("App startup failed!")
- logger.exception(e)
-
-
- if __name__ == "__main__":
- run()
|