mirror of
https://github.com/Jerryplusy/crystelf-plugin.git
synced 2025-12-05 15:41:56 +00:00
🔧 fix(apps/music.js): simplify music result sending and sanitize filenames for better compatibility
This commit is contained in:
parent
7a3df0af50
commit
619f2a3295
@ -146,7 +146,7 @@ export class CrystelfMusic extends plugin {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 发送音乐结果 (修复文件名非法字符 + 失败转语音)
|
* 发送音乐结果
|
||||||
* @param {Object} e 事件对象
|
* @param {Object} e 事件对象
|
||||||
* @param {Object} result 播放结果
|
* @param {Object} result 播放结果
|
||||||
*/
|
*/
|
||||||
@ -159,30 +159,22 @@ export class CrystelfMusic extends plugin {
|
|||||||
await Group.sendGroupRecord(e, e.group_id, `file://${audioFile}`, adapter);
|
await Group.sendGroupRecord(e, e.group_id, `file://${audioFile}`, adapter);
|
||||||
} else {
|
} else {
|
||||||
const extension = await this.getFileExtension();
|
const extension = await this.getFileExtension();
|
||||||
|
// 过滤非法字符
|
||||||
// --- 核心修复开始 ---
|
|
||||||
// 过滤掉 Windows 文件名非法字符 ( \ / : * ? " < > | )
|
|
||||||
const sanitize = (str) => str.replace(/[\\/:*?"<>|]/g, '').replace(/\s+/g, '_');
|
const sanitize = (str) => str.replace(/[\\/:*?"<>|]/g, '').replace(/\s+/g, '_');
|
||||||
|
|
||||||
const sanitizedTitle = sanitize(song.displayTitle);
|
const sanitizedTitle = sanitize(song.displayTitle);
|
||||||
const sanitizedArtist = sanitize(song.displayArtist);
|
const sanitizedArtist = sanitize(song.displayArtist);
|
||||||
const filename = `${sanitizedTitle} - ${sanitizedArtist}.${extension}`;
|
const filename = `${sanitizedTitle} - ${sanitizedArtist}.${extension}`;
|
||||||
// --- 核心修复结束 ---
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// 尝试上传文件 (现在的 filename 已经很干净了)
|
|
||||||
await Group.sendGroupFile(e, e.group_id, `file://${audioFile}`, filename, adapter);
|
await Group.sendGroupFile(e, e.group_id, `file://${audioFile}`, filename, adapter);
|
||||||
} catch (fileErr) {
|
} 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);
|
await Group.sendGroupRecord(e, e.group_id, `file://${audioFile}`, adapter);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
musicSearch.clearUserSelection(e.group_id, e.user_id);
|
musicSearch.clearUserSelection(e.group_id, e.user_id);
|
||||||
logger.info(`[crystelf-music] 音乐处理完成: ${song.displayTitle}`);
|
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
logger.error('[crystelf-music] 发送音乐结果彻底失败:', error);
|
logger.error('[crystelf-music] 发送音乐失败:', error);
|
||||||
await e.reply('发送音乐失败,请稍后重试', true);
|
await e.reply('发送音乐失败,请稍后重试', true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user