import asyncio import json import traceback import re from graia.application import MessageChain from graia.application.message.elements.internal import Plain, Image from graia.scheduler import GraiaScheduler from graia.scheduler.timers import crontabify from core.broadcast import bcc from core.template import logger_info from core.utils import get_url from database import BotDB check_enable_modules_all = BotDB.check_enable_modules_all scheduler = GraiaScheduler(bcc.loop, bcc) async def start_check_weekly(app): @scheduler.schedule(crontabify('30 8 * * MON')) async def check_weekly(): logger_info('Checking MCWZH weekly...') result = json.loads(await get_url( 'https://minecraft.fandom.com/zh/api.php?action=parse&page=Minecraft_Wiki/weekly&prop=text|revid&format=json')) html = result['parse']['text']['*'] text = re.sub(r'

', '\n', html) # 分段 text = re.sub(r'<(.*?)>', '', text, flags=re.DOTALL) # 移除所有 HTML 标签 text = re.sub(r'\n\n\n', '\n\n', text) # 移除不必要的空行 text = re.sub(r'\n*$', '', text) img = re.findall(r'(?<=src=")(.*?)(?=/revision/latest/scale-to-(width|height)-down/\d{3}\?cb=\d{14}?")', html) page = re.findall(r'(?<=