diff --git a/apps/vocal.js b/apps/vocal.js index d0d5a7d..84dfa8f 100644 --- a/apps/vocal.js +++ b/apps/vocal.js @@ -48,6 +48,24 @@ export class Vocal extends plugin { await e.reply('未配置Suno Token') return true } + let description = e.msg.replace(/#((创作)?歌曲|suno|Suno)/, '') + if (description === '额度' || description === 'credit' || description === '余额') { + let sessTokens = Config.sunoSessToken.split(',') + let clientTokens = Config.sunoClientToken.split(',') + let tried = 0 + let msg = '' + while (tried < sessTokens.length) { + let index = tried + let sess = sessTokens[index] + let clientToken = clientTokens[index] + let client = new SunoClient({ sessToken: sess, clientToken }) + let { credit, email } = await client.queryCredit() + logger.info({ credit, email }) + msg += `用户${email}余额:${credit}\n` + } + await e.reply(msg) + return true + } await e.reply('正在生成,请稍后') try { let sessTokens = Config.sunoSessToken.split(',') @@ -59,12 +77,13 @@ export class Vocal extends plugin { let clientToken = clientTokens[index] let client = new SunoClient({ sessToken: sess, clientToken }) let { credit, email } = await client.queryCredit() + logger.info({ credit, email }) if (credit < 10) { tried++ logger.info(`账户${email}余额不足,尝试下一个账户`) continue } - let description = e.msg.replace(/#((创作)?歌曲|suno|Suno)/, '') + let songs = await client.createSong(description) let messages = ['提示词:' + description] for (let song of songs) { diff --git a/client/SunoClient.js b/client/SunoClient.js index a37c791..ba79ddb 100644 --- a/client/SunoClient.js +++ b/client/SunoClient.js @@ -17,7 +17,7 @@ export class SunoClient { let lastToken = this.sessToken let payload = decrypt(lastToken) let sid = JSON.parse(payload).sid - logger.mark('sid: ' + sid) + logger.debug('sid: ' + sid) let tokenRes = await newFetch(`https://clerk.suno.ai/v1/client/sessions/${sid}/tokens/api?_clerk_js_version=4.70.0`, { method: 'POST', headers: { @@ -120,7 +120,7 @@ export class SunoClient { let lastToken = this.sessToken let payload = decrypt(lastToken) let sid = JSON.parse(payload).sid - logger.mark('sid: ' + sid) + logger.debug('sid: ' + sid) let heartbeatUrl = `https://clerk.suno.ai/v1/client/sessions/${sid}/touch?_clerk_js_version=4.70.0` let heartbeatRes = await fetch(heartbeatUrl, { method: 'POST',