diff --git a/apps/chat.js b/apps/chat.js index 3c2dd5f..813f61b 100644 --- a/apps/chat.js +++ b/apps/chat.js @@ -2055,6 +2055,9 @@ export class chatgpt extends plugin { debug: Config.debug }) if (Config.smartMode) { + /** + * @type {AbstractTool[]} + */ let tools = [ new QueryStarRailTool(), new WebsiteTool(), @@ -2081,12 +2084,13 @@ export class chatgpt extends plugin { } if (e.isGroup) { tools.push(new QueryUserinfoTool()) - if (e.member?.is_admin) { + // let self = e.group.pickMember(e.self_id) + if (e.group.is_admin || e.group.is_owner) { tools.push(new EditCardTool()) tools.push(new JinyanTool()) tools.push(new KickOutTool()) } - if (e.member.is_owner) { + if (e.group.is_owner) { tools.push(new SetTitleTool()) } } diff --git a/client/CustomGoogleGeminiClient.js b/client/CustomGoogleGeminiClient.js index 0ce1a39..4ac4aed 100644 --- a/client/CustomGoogleGeminiClient.js +++ b/client/CustomGoogleGeminiClient.js @@ -199,7 +199,12 @@ export class CustomGoogleGeminiClient extends GoogleGeminiClient { } else { // execute function try { - functionResponse.response.content = await chosenTool.func(functionCall.args, this.e) + let args = Object.assign(functionCall.args, { + isAdmin: this.e.group.is_admin, + isOwner: this.e.group.is_owner, + sender: this.e.sender + }) + functionResponse.response.content = await chosenTool.func(args, this.e) if (this.debug) { logger.info(JSON.stringify(functionResponse.response.content)) } diff --git a/utils/tools/SetTitleTool.js b/utils/tools/SetTitleTool.js index efae2fd..b11a111 100644 --- a/utils/tools/SetTitleTool.js +++ b/utils/tools/SetTitleTool.js @@ -34,7 +34,7 @@ export class SetTitleTool extends AbstractTool { return `failed, the user ${qq} is not in group ${groupId}` } if (mm.get(e.bot.uin).role !== 'owner') { - return 'on group owner can give title' + return 'failed, only group owner can give title' } logger.info('edit card: ', groupId, qq) let result = await group.setTitle(qq, title)