#! /usr/bin/env python3 # -*- coding: utf-8 -*- import logging import threading import time from argparse import ArgumentParser from gewechat_client import GewechatClient import urllib.parse from configuration import Config from constants import ChatType from gewechat.api.start_server import start_fastapi_server from gewechat.client import gewe_client from robot import Robot # 配置日志 logger = logging.getLogger(__name__) def main(chat_type: int): config = Config() send_msg_wxid = "filehelper" # 要发送消息的好友昵称 start_fastapi_server(host="0.0.0.0", port=8999) # 创建机器人实例 robot = Robot(config) robot.LOG.info(f"WeChatRobot gewechat 成功启动···") # # 注册Robot实例到callback模块 from gewechat.api.callback import register_robot register_robot(gewe_client.app_id, robot) # 机器人启动发送测试消息 gewe_client.client.post_text(gewe_client.app_id, send_msg_wxid, "client 启动成功!") # # # 每天 8:30 发送新闻 # robot.onEveryTime("08:30", robot.news_baidu_report_auto) # # # epic # robot.onEveryTime("10:30", robot.send_epic_free_games) # # # message report 1:数据自动从redis 转到sqllite # robot.onEveryTime("02:30", robot.message_count_to_db) # # 从db中提取并发送给相关群 # robot.onEveryTime("09:30", robot.generate_and_send_ranking) # # # sehuatang # robot.onEveryTime("15:30", robot.generate_sehuatang_pdf) # # # 秀人网每天自动下载帖子 # robot.onEveryTime("01:30", robot.xiu_ren_download_task) # # # 秀人网每天自动发pdf # robot.onEveryTime("17:30", robot.xiu_ren_pdf_send) # time.sleep(5) # # 启动之后,填入callback # gewe_client.client_set_callback() # # 返回启动的端口,以便调用者知道实际使用的端口 # 启动Dashboard服务器 dashboard_server = None try: # 创建Dashboard服务器实例,共享robot对象 from admin.dashboard.server import DashboardServer dashboard_server = DashboardServer(robot_instance=robot) # 在单独的线程中启动Dashboard服务器 dashboard_thread = threading.Thread(target=dashboard_server.run, daemon=True) dashboard_thread.start() robot.LOG.info(f"Dashboard服务器已在 http://{dashboard_server.host}:{dashboard_server.port} 启动") except Exception as e: robot.LOG.error(f"Dashboard服务器启动失败: {e}") try: time.sleep(10) gewe_client.client_set_callback() except Exception as e: robot.LOG.error(f"client_set_callback error: {e}") # 让机器人一直跑 robot.keep_running_and_block_process() if __name__ == "__main__": parser = ArgumentParser() parser.add_argument('-c', type=int, default=0, help=f'选择模型参数序号: {ChatType.help_hint()}') args = parser.parse_args().c main(args)