diff --git a/utils/common.js b/utils/common.js index e1ab430..351f9cb 100644 --- a/utils/common.js +++ b/utils/common.js @@ -832,6 +832,21 @@ export function getUin (e) { } else return Bot.uin } +export async function getGroupList (e) { + let groupList + try { + groupList = await e.bot.getGroupList() + } catch (err) { + groupList = e.bot.gl + } + //onebot getGroupList方法返回的array,需要转换为map 等同于e.bot.gl + if (Array.isArray(groupList)) { + return e.bot.gl + } else { + return groupList + } +} + /** * 生成当前语音模式下可发送的音频信息 * @param e - 上下文对象 diff --git a/utils/tools/SendAudioMessageTool.js b/utils/tools/SendAudioMessageTool.js index 65945a0..e1b8f56 100644 --- a/utils/tools/SendAudioMessageTool.js +++ b/utils/tools/SendAudioMessageTool.js @@ -1,7 +1,7 @@ import { AbstractTool } from './AbstractTool.js' import { generateVitsAudio } from '../tts.js' import { Config } from '../config.js' -import { generateAudio, generateAzureAudio } from '../common.js' +import { generateAudio, generateAzureAudio, getGroupList } from '../common.js' import VoiceVoxTTS from '../tts/voicevox.js' import uploadRecord from '../uploadRecord.js' @@ -102,12 +102,7 @@ export class SendAudioMessageTool extends AbstractTool { return `audio generation failed, error: ${JSON.stringify(err)}` } if (sendable) { - let groupList - try { - groupList = await e.bot.getGroupList() - } catch (err) { - groupList = e.bot.gl - } + let groupList = await getGroupList(e) try { if (groupList.get(target)) { let group = await e.bot.pickGroup(target) diff --git a/utils/tools/SendAvatarTool.js b/utils/tools/SendAvatarTool.js index 5c076ae..3a938a4 100644 --- a/utils/tools/SendAvatarTool.js +++ b/utils/tools/SendAvatarTool.js @@ -1,4 +1,5 @@ import { AbstractTool } from './AbstractTool.js' +import { getGroupList } from '../common.js' export class SendAvatarTool extends AbstractTool { name = 'sendAvatar' @@ -27,12 +28,7 @@ export class SendAvatarTool extends AbstractTool { const target = isNaN(targetGroupIdOrQQNumber) || !targetGroupIdOrQQNumber ? defaultTarget : parseInt(targetGroupIdOrQQNumber) === e.bot.uin ? defaultTarget : parseInt(targetGroupIdOrQQNumber) - let groupList - try { - groupList = await e.bot.getGroupList() - } catch (err) { - groupList = e.bot.gl - } + let groupList = await getGroupList(e) console.log('sendAvatar', target, pictures) if (groupList.get(target)) { let group = await e.bot.pickGroup(target) diff --git a/utils/tools/SendDiceTool.js b/utils/tools/SendDiceTool.js index 400cb4f..f1e1246 100644 --- a/utils/tools/SendDiceTool.js +++ b/utils/tools/SendDiceTool.js @@ -1,4 +1,5 @@ import { AbstractTool } from './AbstractTool.js' +import { getGroupList } from '../common.js' export class SendDiceTool extends AbstractTool { name = 'sendDice' @@ -24,12 +25,7 @@ export class SendDiceTool extends AbstractTool { const target = isNaN(targetGroupIdOrQQNumber) || !targetGroupIdOrQQNumber ? defaultTarget : parseInt(targetGroupIdOrQQNumber) === e.bot.uin ? defaultTarget : parseInt(targetGroupIdOrQQNumber) - let groupList - try { - groupList = await e.bot.getGroupList() - } catch (err) { - groupList = e.bot.gl - } + let groupList = await getGroupList(e) num = isNaN(num) || !num ? 1 : num > 5 ? 5 : num if (groupList.get(target)) { let group = await e.bot.pickGroup(target, true) diff --git a/utils/tools/SendMessageToSpecificGroupOrUserTool.js b/utils/tools/SendMessageToSpecificGroupOrUserTool.js index 8bc70e3..5172c5c 100644 --- a/utils/tools/SendMessageToSpecificGroupOrUserTool.js +++ b/utils/tools/SendMessageToSpecificGroupOrUserTool.js @@ -1,6 +1,6 @@ import { AbstractTool } from './AbstractTool.js' import { convertFaces } from '../face.js' -import {getMasterQQ} from '../common.js' +import {getMasterQQ, getGroupList} from '../common.js' import {Config} from '../config.js' export class SendMessageToSpecificGroupOrUserTool extends AbstractTool { @@ -27,12 +27,7 @@ export class SendMessageToSpecificGroupOrUserTool extends AbstractTool { ? defaultTarget : parseInt(targetGroupIdOrQQNumber) === e.bot.uin ? defaultTarget : parseInt(targetGroupIdOrQQNumber) - let groupList - try { - groupList = await e.bot.getGroupList() - } catch (err) { - groupList = e.bot.gl - } + let groupList = await getGroupList(e) try { if (groupList.get(target)) { let group = await e.bot.pickGroup(target) diff --git a/utils/tools/SendPictureTool.js b/utils/tools/SendPictureTool.js index 412bc2c..249ae2e 100644 --- a/utils/tools/SendPictureTool.js +++ b/utils/tools/SendPictureTool.js @@ -1,5 +1,5 @@ import { AbstractTool } from './AbstractTool.js' -import {getMasterQQ} from '../common.js' +import {getMasterQQ, getGroupList} from '../common.js' import {Config} from '../config.js' export class SendPictureTool extends AbstractTool { @@ -37,16 +37,10 @@ export class SendPictureTool extends AbstractTool { let pictures = urlOfPicture.trim().split(' ') logger.mark('pictures to send: ', pictures) pictures = pictures.map(img => segment.image(img)) - let groupList - try { - groupList = await e.bot.getGroupList() - } catch (err) { - groupList = e.bot.gl - } + let groupList = await getGroupList(e) let errs = [] try { - if ((typeof groupList.get === 'function' && groupList.get(target)) || - (Array.isArray(groupList) && groupList.includes(target))) { + if (groupList.get(target)) { let group = await e.bot.pickGroup(target) for (let pic of pictures) { try { diff --git a/utils/tools/SendRPSTool.js b/utils/tools/SendRPSTool.js index 762946c..c4360cb 100644 --- a/utils/tools/SendRPSTool.js +++ b/utils/tools/SendRPSTool.js @@ -1,4 +1,5 @@ import { AbstractTool } from './AbstractTool.js' +import { getGroupList } from '../common.js' export class SendRPSTool extends AbstractTool { name = 'sendRPS' @@ -20,12 +21,7 @@ export class SendRPSTool extends AbstractTool { const target = isNaN(targetGroupIdOrQQNumber) || !targetGroupIdOrQQNumber ? defaultTarget : parseInt(targetGroupIdOrQQNumber) === e.bot.uin ? defaultTarget : parseInt(targetGroupIdOrQQNumber) - let groupList - try { - groupList = await e.bot.getGroupList() - } catch (err) { - groupList = e.bot.gl - } + let groupList = await getGroupList(e) if (groupList.get(target)) { let group = await e.bot.pickGroup(target, true) await group.sendMsg(segment.rps(num))