MCPcopy Create free account
hub / github.com/TeleBoxOrg/TeleBox_Plugins / tts

Function tts

t/t.ts:225–307  ·  view source on GitHub ↗
(msg: Api.Message)

Source from the content-addressed store, hash-verified

223
224 if (isPrivate) {
225 await (msg as any).delete({ revoke: true }); // 双向删除
226 } else {
227 await msg.delete(); // 普通删除
228 }
229 } catch {}
230}
231
232// 文字转语音主处理
233async function tts(msg: Api.Message) {
234 const userId = msg.senderId?.toString();
235 if (!userId) return;
236 const userData = await loadUserData();
237 const cfg = userData.users[userId];
238 if (!cfg || !cfg.apiKey) {
239 await msg.edit({ text: `❌ 请先设置 API Key (${mainPrefix}tk)` });
240 return;
241 }
242
243 const parts = msg.text?.split(/\s+/).slice(1) || [];
244
245 // fm 设置封面
246 if (parts[0] === "fm" && parts[1]) {
247 userData.covers![cfg.defaultRole] = parts[1];
248 await saveUserData(userData);
249 await msg.edit({ text: `✅ 已为角色 ${cfg.defaultRole} 设置封面` });
250 return;
251 }
252
253 // 音乐模式:歌曲名 歌手 [专辑名] 文本
254 if (parts.length >= 3) {
255 const title = parts[0];
256 const artist = parts[1];
257 let album = cfg.defaultRole;
258 let text = "";
259 if (parts.length >= 4) { album = parts[2]; text = parts.slice(3).join(" "); }
260 else { text = parts.slice(2).join(" "); }
261
262 const cover = userData.covers?.[cfg.defaultRole];
263
264 // 优先被你回复的那条消息
265 const rep = msg.replyTo?.replyToMsgId ? await safeGetReplyMessage(msg) : null;
266 const replyToId = rep?.id ?? msg.id;
267
268 const file = await generateMusic(cleanTextForTTS(text), cfg.defaultRoleId, cfg.apiKey, { title, artist, album, cover });
269 if (file) {
270 await msg.client?.sendFile(msg.peerId, {
271 file,
272 caption: `${title} - ${artist}`,
273 replyTo: replyToId,
274 attributes: [
275 new (Api as any).DocumentAttributeAudio({
276 duration: 0,
277 title,
278 performer: artist,
279 }),
280 ],
281 });
282 try { await fs.unlink(file); } catch {}

Callers

nothing calls this directly

Calls 7

loadUserDataFunction · 0.85
saveUserDataFunction · 0.85
generateMusicFunction · 0.85
generateSpeechSimpleFunction · 0.85
cleanTextForTTSFunction · 0.70
deleteCommandMessageFunction · 0.70
editMethod · 0.45

Tested by

no test coverage detected