From 619f2a3295b5b880cc3f51bd9741d1c1e07c9624 Mon Sep 17 00:00:00 2001 From: Jerryplusy Date: Sun, 30 Nov 2025 11:07:38 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=A7=20fix(apps/music.js):=20simplify?= =?UTF-8?q?=20music=20result=20sending=20and=20sanitize=20filenames=20for?= =?UTF-8?q?=20better=20compatibility?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/music.js | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/apps/music.js b/apps/music.js index 88d426a..42f39c7 100644 --- a/apps/music.js +++ b/apps/music.js @@ -146,7 +146,7 @@ export class CrystelfMusic extends plugin { } /** - * 发送音乐结果 (修复文件名非法字符 + 失败转语音) + * 发送音乐结果 * @param {Object} e 事件对象 * @param {Object} result 播放结果 */ @@ -159,30 +159,22 @@ export class CrystelfMusic extends plugin { await Group.sendGroupRecord(e, e.group_id, `file://${audioFile}`, adapter); } else { const extension = await this.getFileExtension(); - - // --- 核心修复开始 --- - // 过滤掉 Windows 文件名非法字符 ( \ / : * ? " < > | ) + // 过滤非法字符 const sanitize = (str) => str.replace(/[\\/:*?"<>|]/g, '').replace(/\s+/g, '_'); const sanitizedTitle = sanitize(song.displayTitle); const sanitizedArtist = sanitize(song.displayArtist); const filename = `${sanitizedTitle} - ${sanitizedArtist}.${extension}`; - // --- 核心修复结束 --- - try { - // 尝试上传文件 (现在的 filename 已经很干净了) await Group.sendGroupFile(e, e.group_id, `file://${audioFile}`, filename, adapter); } catch (fileErr) { - logger.warn(`[crystelf-music] 文件发送失败(文件名: ${filename}),尝试转为语音: ${fileErr.message}`); - // 失败兜底:发送语音 + logger.warn(`[crystelf-music] 文件发送失败,尝试转为语音: ${fileErr.message}`); await Group.sendGroupRecord(e, e.group_id, `file://${audioFile}`, adapter); } } - musicSearch.clearUserSelection(e.group_id, e.user_id); - logger.info(`[crystelf-music] 音乐处理完成: ${song.displayTitle}`); } catch (error) { - logger.error('[crystelf-music] 发送音乐结果彻底失败:', error); + logger.error('[crystelf-music] 发送音乐失败:', error); await e.reply('发送音乐失败,请稍后重试', true); } }