1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
| from nonebot import on_message from nonebot.adapters.onebot.v11 import Bot, MessageEvent, MessageSegment import asyncio import re from pathlib import Path import subprocess import os
comic_matcher = on_message()
@comic_matcher.handle() async def handle_comic(bot: Bot, event: MessageEvent): plain_text = event.get_plaintext().strip() if "comic" in plain_text.lower(): numbers = re.findall(r'\d+', plain_text) if numbers: album_id = numbers[0] if album_id == "350234" or album_id == "350235": await bot.send(event, "带着你的苦命鸳鸯吃大分去吧!") else: try: await bot.send(event, f"开始下载漫画 {album_id},请稍候...") result = subprocess.run( f"jmcomic {album_id}", shell=True, capture_output=True, text=True, cwd="." ) if result.returncode == 0: image_files = [] for file in Path(".").rglob("*"): if file.suffix.lower() in ['.jpg', '.jpeg', '.png', '.webp']: image_files.append(file) image_files.sort(key=lambda x: x.stat().st_mtime, reverse=True) if image_files: recent_files = image_files[:50] recent_files.sort(key=lambda x: x.name) await bot.send(event, f"找到 {len(recent_files)} 张图片,开始发送...") for i, image_file in enumerate(recent_files, 1): try: await bot.send(event, MessageSegment.image(image_file)) await asyncio.sleep(1) except Exception as e: print(f"发送图片失败: {e}") continue await bot.send(event, f"漫画发送完成!") else: await bot.send(event, "下载完成但未找到图片文件") else: await bot.send(event, f"下载失败: {result.stderr}") except Exception as e: await bot.send(event, f"处理失败: {str(e)}")
|