diff --git a/lib/bot.js b/lib/bot.js index a9571cb..5a21685 100644 --- a/lib/bot.js +++ b/lib/bot.js @@ -66,10 +66,7 @@ export default class Yunzai extends EventEmitter { map.set(id, { ...i, bot_id }) return map } - - get fl() { - return this.getFriendMap() - } + get fl() { return this.getFriendMap() } getGroupArray() { const array = [] @@ -94,14 +91,7 @@ export default class Yunzai extends EventEmitter { map.set(id, { ...i, bot_id }) return map } - - get gl() { - return this.getGroupMap() - } - - pickUser(user_id) { - return this.pickFriend(user_id) - } + get gl() { return this.getGroupMap() } pickFriend(user_id) { user_id = Number(user_id) || String(user_id) @@ -109,6 +99,7 @@ export default class Yunzai extends EventEmitter { if (user) return this[user.bot_id].pickFriend(user_id) logger.error(`获取用户对象失败:找不到用户 ${logger.red(user_id)}`) } + get pickUser() { return this.pickFriend } pickGroup(group_id) { group_id = Number(group_id) || String(group_id) @@ -156,19 +147,18 @@ export default class Yunzai extends EventEmitter { return false } - sendMasterMsg(msg) { - for (const bot_id in cfg.master) - for (const user_id of cfg.master[bot_id]) - this.sendFriendMsg(bot_id, user_id, msg) - } + async getFriendMsg(fnc = () => true) { + if (typeof fnc != "function") { + const { self_id, user_id } = fnc + fnc = data => data.self_id == self_id && data.user_id == user_id + } - async getMasterMsg() { while (true) { const msg = await new Promise(resolve => { this.once("message", data => { - if (cfg.master[data.self_id]?.includes(String(data.user_id)) && data.message) { + if (data.message && fnc(data)) { let msg = "" - for (let i of data.message) + for (const i of data.message) if (i.type = "text") msg += i.text.trim() resolve(msg) @@ -181,11 +171,19 @@ export default class Yunzai extends EventEmitter { } } - makeForwardMsg(msg) { - msg.replace = () => msg - return { type: "node", data: msg } + getMasterMsg() { + return this.getFriendMsg(data => + cfg.master[data.self_id]?.includes(String(data.user_id))) } + sendMasterMsg(msg) { + for (const bot_id in cfg.master) + for (const user_id of cfg.master[bot_id]) + this.sendFriendMsg(bot_id, user_id, msg) + } + + makeForwardMsg(msg) { return { type: "node", data: msg } } + async sendForwardMsg(send, msg) { const messages = [] for (const { message } of msg) diff --git a/lib/plugins/loader.js b/lib/plugins/loader.js index 4e14302..3e07b8b 100644 --- a/lib/plugins/loader.js +++ b/lib/plugins/loader.js @@ -471,7 +471,7 @@ class PluginsLoader { * @param msg 发送的消息 * @param quote 是否引用回复 * @param data.recallMsg 是否撤回消息,0-120秒,0不撤回 - * @param data.at 是否at用户 + * @param data.at 是否提及用户 */ e.reply = async (msg = "", quote = false, data = {}) => { if (!msg) return false diff --git a/lib/plugins/plugin.js b/lib/plugins/plugin.js index 2b9e778..0c43488 100644 --- a/lib/plugins/plugin.js +++ b/lib/plugins/plugin.js @@ -1,4 +1,3 @@ - let stateArr = {} export default class plugin { @@ -40,17 +39,17 @@ export default class plugin { } /** - * @param msg 发送的消息 - * @param quote 是否引用回复 - * @param data.recallMsg 群聊是否撤回消息,0-120秒,0不撤回 - * @param data.at 是否at用户 - */ - reply (msg = '', quote = false, data = {}) { + * @param msg 发送的消息 + * @param quote 是否引用回复 + * @param data.recallMsg 是否撤回消息,0-120秒,0不撤回 + * @param data.at 是否提及用户 + */ + reply(msg = '', quote = false, data = {}) { if (!this.e.reply || !msg) return false return this.e.reply(msg, quote, data) } - conKey (isGroup = false) { + conKey(isGroup = false) { if (isGroup) { return `${this.name}.${this.e.group_id}` } else { @@ -63,7 +62,7 @@ export default class plugin { * @param isGroup 是否群聊 * @param time 操作时间,默认120秒 */ - setContext (type, isGroup = false, time = 120) { + setContext(type, isGroup = false, time = 120) { let key = this.conKey(isGroup) if (!stateArr[key]) stateArr[key] = {} stateArr[key][type] = this.e @@ -78,12 +77,12 @@ export default class plugin { } } - getContext () { + getContext() { let key = this.conKey() return stateArr[key] } - getContextGroup () { + getContextGroup() { let key = this.conKey(true) return stateArr[key] } @@ -92,9 +91,9 @@ export default class plugin { * @param type 执行方法 * @param isGroup 是否群聊 */ - finish (type, isGroup = false) { + finish(type, isGroup = false) { if (stateArr[this.conKey(isGroup)] && stateArr[this.conKey(isGroup)][type]) { delete stateArr[this.conKey(isGroup)][type] } } -} +} \ No newline at end of file diff --git a/lib/plugins/stdin.js b/lib/plugins/stdin.js index e22a011..af58aa9 100644 --- a/lib/plugins/stdin.js +++ b/lib/plugins/stdin.js @@ -101,6 +101,10 @@ Bot.adapter.push(new class stdinAdapter { pickFriend() { return { + user_id: this.id, + nickname: this.name, + group_id: this.id, + group_name: this.name, sendMsg: msg => this.sendMsg(msg), recallMsg: message_id => this.recallMsg(message_id), makeForwardMsg: Bot.makeForwardMsg, @@ -116,7 +120,7 @@ Bot.adapter.push(new class stdinAdapter { user_id: this.id, post_type: "message", message_type: "private", - sender: { nickname: this.name }, + sender: { user_id: this.id, nickname: this.name }, message: [{ type: "text", text: msg }], raw_message: msg, friend: this.pickFriend(), @@ -135,18 +139,17 @@ Bot.adapter.push(new class stdinAdapter { stat: { start_time: Date.now()/1000 }, version: { id: this.id, name: this.name }, pickFriend: () => this.pickFriend(), - pickUser: () => this.pickFriend(), - pickMember: () => this.pickFriend(), - pickGroup: () => this.pickFriend(), + get pickUser() { return this.pickFriend }, + get pickMember() { return this.pickFriend }, + get pickGroup() { return this.pickFriend }, fl: new Map().set(this.id, { user_id: this.id, nickname: this.name, - }), - gl: new Map().set(this.id, { group_id: this.id, group_name: this.name, }), + get gl() { return this.fl }, } if (!Bot.uin.includes(this.id)) diff --git a/plugins/adapter/ComWeChat.js b/plugins/adapter/ComWeChat.js index 1af15e7..78eb34c 100644 --- a/plugins/adapter/ComWeChat.js +++ b/plugins/adapter/ComWeChat.js @@ -301,9 +301,8 @@ Bot.adapter.push(new class ComWeChatAdapter { get nickname() { return this.info.user_name }, get avatar() { return this.info["wx.avatar"] }, - pickUser: user_id => this.pickFriend(data, user_id), pickFriend: user_id => this.pickFriend(data, user_id), - + get pickUser() { return this.pickFriend }, getFriendArray: () => this.getFriendArray(data), getFriendList: () => this.getFriendList(data), getFriendMap: () => this.getFriendMap(data), @@ -311,7 +310,6 @@ Bot.adapter.push(new class ComWeChatAdapter { pickMember: (group_id, user_id) => this.pickMember(data, group_id, user_id), pickGroup: group_id => this.pickGroup(data, group_id), - getGroupArray: () => this.getGroupArray(data), getGroupList: () => this.getGroupList(data), getGroupMap: () => this.getGroupMap(data), diff --git a/plugins/adapter/GSUIDCore.js b/plugins/adapter/GSUIDCore.js index fe3c4f5..f53b633 100644 --- a/plugins/adapter/GSUIDCore.js +++ b/plugins/adapter/GSUIDCore.js @@ -168,12 +168,12 @@ Bot.adapter.push(new class GSUIDCoreAdapter { name: this.name, }, pickFriend: user_id => this.pickFriend(data.self_id, user_id), + get pickUser() { return this.pickFriend }, pickMember: (group_id, user_id) => this.pickMember(data.self_id, group_id, user_id), pickGroup: group_id => this.pickGroup(data.self_id, group_id), fl: new Map(), gl: new Map(), } - Bot[data.self_id].pickUser = Bot[data.self_id].pickFriend if (!Bot.uin.includes(data.self_id)) Bot.uin.push(data.self_id) diff --git a/plugins/adapter/go-cqhttp.js b/plugins/adapter/go-cqhttp.js index 0d01044..5514d65 100644 --- a/plugins/adapter/go-cqhttp.js +++ b/plugins/adapter/go-cqhttp.js @@ -576,9 +576,8 @@ Bot.adapter.push(new class gocqhttpAdapter { setProfile: profile => this.setProfile(data, profile), setNickname: nickname => this.setProfile(data, { nickname }), - pickUser: user_id => this.pickFriend(data, user_id), pickFriend: user_id => this.pickFriend(data, user_id), - + get pickUser() { return this.pickFriend }, getFriendArray: () => this.getFriendArray(data), getFriendList: () => this.getFriendList(data), getFriendMap: () => this.getFriendMap(data), @@ -586,7 +585,6 @@ Bot.adapter.push(new class gocqhttpAdapter { pickMember: (group_id, user_id) => this.pickMember(data, group_id, user_id), pickGroup: group_id => this.pickGroup(data, group_id), - getGroupArray: () => this.getGroupArray(data), getGroupList: () => this.getGroupList(data), getGroupMap: () => this.getGroupMap(data),