855 协议版本-调整完毕内容

This commit is contained in:
liuwei
2025-04-30 13:22:33 +08:00
parent 869bce8a18
commit 454d084715
88 changed files with 1565 additions and 7816 deletions

View File

@@ -1,4 +1,3 @@
import logging
import asyncio
import threading
import time # 添加这一行
@@ -12,6 +11,7 @@ from utils.robot_cmd.robot_command import Feature, PermissionStatus, GroupBotMan
from utils.decorator.points_decorator import plugin_points_cost
from utils.ai.dify_news_analyze import dify_news_title_analyze
from utils.markdown_to_image import convert_md_str_to_image
from wechat_ipad import WechatAPIClient
# 导入新闻抓取函数
from .news_crawler import nbc, cnn, abc, fox, bbc
@@ -46,11 +46,12 @@ class GlobalNewsPlugin(MessagePluginInterface):
def __init__(self):
super().__init__()
self.bot: WechatAPIClient = None
self._news_tasks = {} # 存储正在进行的新闻抓取任务
def initialize(self, context: Dict[str, Any]) -> bool:
"""初始化插件"""
self.LOG = logging.getLogger(f"Plugin.{self.name}")
self.LOG.info(f"正在初始化 {self.name} 插件...")
# 保存上下文对象
@@ -90,13 +91,14 @@ class GlobalNewsPlugin(MessagePluginInterface):
@plugin_stats_decorator(plugin_name="全球政治经济新闻")
@plugin_points_cost(5, "全球新闻消耗积分", Feature.NEWS)
def process_message(self, message: Dict[str, Any]) -> Tuple[bool, Optional[str]]:
async def process_message(self, message: Dict[str, Any]) -> Tuple[bool, Optional[str]]:
"""处理消息"""
content = str(message.get("content", "")).strip()
self.LOG.info(f"插件执行: {self.name}{content}")
sender = message.get("sender")
roomid = message.get("roomid", "")
gbm: GroupBotManager = message.get("gbm")
self.bot: WechatAPIClient = message.get("bot")
# 检查权限
if roomid and gbm.get_group_permission(roomid, Feature.NEWS) == PermissionStatus.DISABLED:
@@ -106,8 +108,8 @@ class GlobalNewsPlugin(MessagePluginInterface):
task_id = f"{sender}_{roomid}_{int(time.time())}"
# 发送等待消息
self.message_util.send_text("🌍正在获取全球新闻,请稍候...",
(roomid if roomid else sender), sender)
await self.bot.send_text_message(
(roomid if roomid else sender), "🌍正在获取全球新闻,请稍候...", sender)
# 启动异步任务
self._start_news_task(task_id, sender, roomid)
@@ -125,7 +127,7 @@ class GlobalNewsPlugin(MessagePluginInterface):
self._news_tasks[task_id] = thread
self.LOG.info(f"启动新闻获取任务: {task_id}")
def _fetch_news_thread(self, task_id: str, sender: str, roomid: str):
async def _fetch_news_thread(self, task_id: str, sender: str, roomid: str):
"""在单独的线程中运行异步新闻获取任务"""
try:
loop = asyncio.new_event_loop()
@@ -137,15 +139,15 @@ class GlobalNewsPlugin(MessagePluginInterface):
if news_result:
# 发送新闻图片
receiver = roomid if roomid else sender
self.message_util.send_image(news_result, receiver)
self.message_util.send_text("🌍全球新闻获取完成!", receiver, sender)
await self.bot.send_image_message(receiver, news_result)
await self.bot.send_text_message("🌍全球新闻获取完成!", receiver, sender)
else:
self.message_util.send_text("❌获取新闻失败,请稍后再试",
(roomid if roomid else sender), sender)
await self.bot.send_text_message(
(roomid if roomid else sender), "❌获取新闻失败,请稍后再试", sender)
except Exception as e:
self.LOG.error(f"新闻获取任务出错: {e}")
self.message_util.send_text(f"❌获取新闻出错: {str(e)}",
(roomid if roomid else sender), sender)
await self.bot.send_text_message((roomid if roomid else sender), f"❌获取新闻出错: {str(e)}",
sender)
finally:
# 清理任务
if task_id in self._news_tasks:

View File

@@ -7,20 +7,10 @@ Created Date: 2024-05-01
import requests
from time import localtime, sleep
from lxml import etree
import logging
from loguru import logger
from datetime import datetime
import time
# 配置日志
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(levelname)s - %(message)s',
handlers=[
logging.FileHandler(f'global_news_{datetime.now().strftime("%Y%m%d")}.log'),
logging.StreamHandler()
]
)
logger = logging.getLogger(__name__)
# 请求配置
HEADERS = {