855 协议版本-调整完毕内容
This commit is contained in:
@@ -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:
|
||||
|
||||
@@ -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 = {
|
||||
|
||||
Reference in New Issue
Block a user