koishi-plugin-imgdraw-selfuse 0.0.6 → 0.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/index.js +37 -3
- package/package.json +2 -2
package/lib/index.js
CHANGED
|
@@ -121,8 +121,19 @@ async function apply(ctx, cfg) {
|
|
|
121
121
|
apiIdx.val++;
|
|
122
122
|
return api;
|
|
123
123
|
}
|
|
124
|
+
// ==================== 修复:增强 HTML/XML 清理 ====================
|
|
124
125
|
function cleanHtmlTags(str) {
|
|
125
|
-
|
|
126
|
+
if (!str)
|
|
127
|
+
return '';
|
|
128
|
+
// 1. 清理标准 HTML 标签
|
|
129
|
+
let cleaned = str.replace(/<<[^>]+>/g, ' ');
|
|
130
|
+
// 2. 清理 QQ XML 图片标签(如 <img src="..." file="..."/>)
|
|
131
|
+
cleaned = cleaned.replace(/<<img\s+[^>]+\/>/gi, ' ');
|
|
132
|
+
// 3. 清理其他 XML 标签
|
|
133
|
+
cleaned = cleaned.replace(/<<[^>]+>/g, ' ');
|
|
134
|
+
// 4. 清理多余空格和换行
|
|
135
|
+
cleaned = cleaned.replace(/\s+/g, ' ').trim();
|
|
136
|
+
return cleaned;
|
|
126
137
|
}
|
|
127
138
|
// 增强图片提取函数
|
|
128
139
|
function getImageUrlFromContent(text) {
|
|
@@ -471,6 +482,18 @@ async function apply(ctx, cfg) {
|
|
|
471
482
|
await safeSend(session, cfg.messages.generating);
|
|
472
483
|
await generateWithMultipleImages(session, finalPrompt, finalUrls, cfg.img2imgModel || cfg.model);
|
|
473
484
|
}
|
|
485
|
+
// ==================== 新增:从 session.elements 提取纯文本 ====================
|
|
486
|
+
function extractTextFromElements(elements) {
|
|
487
|
+
if (!elements || !Array.isArray(elements))
|
|
488
|
+
return '';
|
|
489
|
+
const textParts = [];
|
|
490
|
+
for (const el of elements) {
|
|
491
|
+
if (el.type === 'text') {
|
|
492
|
+
textParts.push(el.attrs?.content || el.attrs?.text || '');
|
|
493
|
+
}
|
|
494
|
+
}
|
|
495
|
+
return cleanHtmlTags(textParts.join(' '));
|
|
496
|
+
}
|
|
474
497
|
// ==================== 命令注册 ====================
|
|
475
498
|
const cmd = ctx.command(`${cfg.command} <raw:text>`, 'draw');
|
|
476
499
|
cfg.aliases.forEach((alias) => cmd.alias(alias));
|
|
@@ -507,13 +530,24 @@ async function apply(ctx, cfg) {
|
|
|
507
530
|
return safeSend(session, cfg.messages.blacklisted);
|
|
508
531
|
if (!cfg.enableImg2Img)
|
|
509
532
|
return safeSend(session, cfg.messages.img2imgDisabled);
|
|
510
|
-
|
|
533
|
+
// ==================== 修复:从 elements 提取纯文本,避免 XML 污染 ====================
|
|
534
|
+
let prompt = '';
|
|
535
|
+
if (session.elements && session.elements.length > 0) {
|
|
536
|
+
// 有 elements,从中提取纯文本(排除图片等)
|
|
537
|
+
prompt = extractTextFromElements(session.elements);
|
|
538
|
+
if (debug)
|
|
539
|
+
logger.info('从 elements 提取的 prompt:', prompt);
|
|
540
|
+
}
|
|
541
|
+
// 如果 elements 没有文本,回退到 raw
|
|
542
|
+
if (!prompt && raw) {
|
|
543
|
+
prompt = cleanHtmlTags(raw);
|
|
544
|
+
}
|
|
511
545
|
// 检查消息中是否包含图片(QQ 合并消息)
|
|
512
546
|
const messageImages = session.elements ? koishi_1.h.select(session.elements, 'img') : [];
|
|
513
547
|
if (messageImages.length > 0) {
|
|
514
548
|
// 合并消息:同时包含文字和图片,直接处理
|
|
515
549
|
if (debug)
|
|
516
|
-
logger.info(`检测到合并消息,包含 ${messageImages.length}
|
|
550
|
+
logger.info(`检测到合并消息,包含 ${messageImages.length} 张图片,prompt: "${prompt}"`);
|
|
517
551
|
if (!prompt) {
|
|
518
552
|
// 如果没有文字 prompt,使用默认提示
|
|
519
553
|
await processImg2ImgWithImages(session, '请根据图片内容进行编辑', messageImages);
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "koishi-plugin-imgdraw-selfuse",
|
|
3
|
-
"description": "修改自ai-image的画图插件,支持openai兼容api,增加base64转换以适配GPTimg2
|
|
4
|
-
"version": "0.0.
|
|
3
|
+
"description": "修改自ai-image的画图插件,支持openai兼容api,增加base64转换以适配GPTimg2,支持发送合并消息图生图",
|
|
4
|
+
"version": "0.0.7",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"typings": "lib/index.d.ts",
|
|
7
7
|
"files": [
|