feat(bym): 添加 SerpTool 并增强 EditCardTool 功能

- 添加 SerpTool,用于处理搜索结果
- 在 bym 插件中根据配置条件动态加载 SerpTool
- 更新 EditCardTool,增加管理员权限验证功能
This commit is contained in:
ycxom 2024-12-31 13:34:05 +08:00
parent 2cf83fbdd8
commit 3e70ae88dc
2 changed files with 11 additions and 2 deletions

View file

@ -16,6 +16,8 @@ import { EditCardTool } from '../utils/tools/EditCardTool.js'
import { JinyanTool } from '../utils/tools/JinyanTool.js' import { JinyanTool } from '../utils/tools/JinyanTool.js'
import { KickOutTool } from '../utils/tools/KickOutTool.js' import { KickOutTool } from '../utils/tools/KickOutTool.js'
import { SetTitleTool } from '../utils/tools/SetTitleTool.js' import { SetTitleTool } from '../utils/tools/SetTitleTool.js'
import {SerpTool} from '../utils/tools/SerpTool.js'
import fs from "fs"; import fs from "fs";
import { fileTypeFromBuffer } from 'file-type'; import { fileTypeFromBuffer } from 'file-type';
import moment from 'moment'; import moment from 'moment';
@ -275,6 +277,9 @@ export class bym extends plugin {
new WebsiteTool(), new WebsiteTool(),
new WeatherTool() new WeatherTool()
] ]
if (Config.azSerpKey) {
tools.push(new SerpTool())
}
if (e.group.is_admin || e.group.is_owner) { if (e.group.is_admin || e.group.is_owner) {
tools.push(new EditCardTool()) tools.push(new EditCardTool())
tools.push(new JinyanTool()) tools.push(new JinyanTool())

View file

@ -24,7 +24,7 @@ export class EditCardTool extends AbstractTool {
description = 'Useful when you want to edit someone\'s card in the group(群名片)' description = 'Useful when you want to edit someone\'s card in the group(群名片)'
func = async function (opts, e) { func = async function (opts, e) {
let { qq, card, groupId } = opts let { qq, card, groupId, isAdmin } = opts
qq = isNaN(qq) || !qq ? e.sender.user_id : parseInt(qq.trim()) qq = isNaN(qq) || !qq ? e.sender.user_id : parseInt(qq.trim())
groupId = isNaN(groupId) || !groupId ? e.group_id : parseInt(groupId.trim()) groupId = isNaN(groupId) || !groupId ? e.group_id : parseInt(groupId.trim())
@ -41,7 +41,11 @@ export class EditCardTool extends AbstractTool {
logger.error('获取群信息失败,可能使用的底层协议不完善') logger.error('获取群信息失败,可能使用的底层协议不完善')
} }
logger.info('edit card: ', groupId, qq) logger.info('edit card: ', groupId, qq)
await group.setCard(qq, card) if (isAdmin) {
await group.setCard(qq, card)
} else {
return 'the user is not admin, he can\'t edit card of other people.'
}
return `the user ${qq}'s card has been changed into ${card}` return `the user ${qq}'s card has been changed into ${card}`
} }
} }