优化 获取用户消息
This commit is contained in:
parent
276d27f24c
commit
090b7d8b43
44
lib/bot.js
44
lib/bot.js
|
@ -66,10 +66,7 @@ export default class Yunzai extends EventEmitter {
|
||||||
map.set(id, { ...i, bot_id })
|
map.set(id, { ...i, bot_id })
|
||||||
return map
|
return map
|
||||||
}
|
}
|
||||||
|
get fl() { return this.getFriendMap() }
|
||||||
get fl() {
|
|
||||||
return this.getFriendMap()
|
|
||||||
}
|
|
||||||
|
|
||||||
getGroupArray() {
|
getGroupArray() {
|
||||||
const array = []
|
const array = []
|
||||||
|
@ -94,14 +91,7 @@ export default class Yunzai extends EventEmitter {
|
||||||
map.set(id, { ...i, bot_id })
|
map.set(id, { ...i, bot_id })
|
||||||
return map
|
return map
|
||||||
}
|
}
|
||||||
|
get gl() { return this.getGroupMap() }
|
||||||
get gl() {
|
|
||||||
return this.getGroupMap()
|
|
||||||
}
|
|
||||||
|
|
||||||
pickUser(user_id) {
|
|
||||||
return this.pickFriend(user_id)
|
|
||||||
}
|
|
||||||
|
|
||||||
pickFriend(user_id) {
|
pickFriend(user_id) {
|
||||||
user_id = Number(user_id) || String(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)
|
if (user) return this[user.bot_id].pickFriend(user_id)
|
||||||
logger.error(`获取用户对象失败:找不到用户 ${logger.red(user_id)}`)
|
logger.error(`获取用户对象失败:找不到用户 ${logger.red(user_id)}`)
|
||||||
}
|
}
|
||||||
|
get pickUser() { return this.pickFriend }
|
||||||
|
|
||||||
pickGroup(group_id) {
|
pickGroup(group_id) {
|
||||||
group_id = Number(group_id) || String(group_id)
|
group_id = Number(group_id) || String(group_id)
|
||||||
|
@ -156,19 +147,18 @@ export default class Yunzai extends EventEmitter {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
sendMasterMsg(msg) {
|
async getFriendMsg(fnc = () => true) {
|
||||||
for (const bot_id in cfg.master)
|
if (typeof fnc != "function") {
|
||||||
for (const user_id of cfg.master[bot_id])
|
const { self_id, user_id } = fnc
|
||||||
this.sendFriendMsg(bot_id, user_id, msg)
|
fnc = data => data.self_id == self_id && data.user_id == user_id
|
||||||
}
|
}
|
||||||
|
|
||||||
async getMasterMsg() {
|
|
||||||
while (true) {
|
while (true) {
|
||||||
const msg = await new Promise(resolve => {
|
const msg = await new Promise(resolve => {
|
||||||
this.once("message", data => {
|
this.once("message", data => {
|
||||||
if (cfg.master[data.self_id]?.includes(String(data.user_id)) && data.message) {
|
if (data.message && fnc(data)) {
|
||||||
let msg = ""
|
let msg = ""
|
||||||
for (let i of data.message)
|
for (const i of data.message)
|
||||||
if (i.type = "text")
|
if (i.type = "text")
|
||||||
msg += i.text.trim()
|
msg += i.text.trim()
|
||||||
resolve(msg)
|
resolve(msg)
|
||||||
|
@ -181,11 +171,19 @@ export default class Yunzai extends EventEmitter {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
makeForwardMsg(msg) {
|
getMasterMsg() {
|
||||||
msg.replace = () => msg
|
return this.getFriendMsg(data =>
|
||||||
return { type: "node", data: msg }
|
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) {
|
async sendForwardMsg(send, msg) {
|
||||||
const messages = []
|
const messages = []
|
||||||
for (const { message } of msg)
|
for (const { message } of msg)
|
||||||
|
|
|
@ -471,7 +471,7 @@ class PluginsLoader {
|
||||||
* @param msg 发送的消息
|
* @param msg 发送的消息
|
||||||
* @param quote 是否引用回复
|
* @param quote 是否引用回复
|
||||||
* @param data.recallMsg 是否撤回消息,0-120秒,0不撤回
|
* @param data.recallMsg 是否撤回消息,0-120秒,0不撤回
|
||||||
* @param data.at 是否at用户
|
* @param data.at 是否提及用户
|
||||||
*/
|
*/
|
||||||
e.reply = async (msg = "", quote = false, data = {}) => {
|
e.reply = async (msg = "", quote = false, data = {}) => {
|
||||||
if (!msg) return false
|
if (!msg) return false
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
let stateArr = {}
|
let stateArr = {}
|
||||||
|
|
||||||
export default class plugin {
|
export default class plugin {
|
||||||
|
@ -40,17 +39,17 @@ export default class plugin {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param msg 发送的消息
|
* @param msg 发送的消息
|
||||||
* @param quote 是否引用回复
|
* @param quote 是否引用回复
|
||||||
* @param data.recallMsg 群聊是否撤回消息,0-120秒,0不撤回
|
* @param data.recallMsg 是否撤回消息,0-120秒,0不撤回
|
||||||
* @param data.at 是否at用户
|
* @param data.at 是否提及用户
|
||||||
*/
|
*/
|
||||||
reply (msg = '', quote = false, data = {}) {
|
reply(msg = '', quote = false, data = {}) {
|
||||||
if (!this.e.reply || !msg) return false
|
if (!this.e.reply || !msg) return false
|
||||||
return this.e.reply(msg, quote, data)
|
return this.e.reply(msg, quote, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
conKey (isGroup = false) {
|
conKey(isGroup = false) {
|
||||||
if (isGroup) {
|
if (isGroup) {
|
||||||
return `${this.name}.${this.e.group_id}`
|
return `${this.name}.${this.e.group_id}`
|
||||||
} else {
|
} else {
|
||||||
|
@ -63,7 +62,7 @@ export default class plugin {
|
||||||
* @param isGroup 是否群聊
|
* @param isGroup 是否群聊
|
||||||
* @param time 操作时间,默认120秒
|
* @param time 操作时间,默认120秒
|
||||||
*/
|
*/
|
||||||
setContext (type, isGroup = false, time = 120) {
|
setContext(type, isGroup = false, time = 120) {
|
||||||
let key = this.conKey(isGroup)
|
let key = this.conKey(isGroup)
|
||||||
if (!stateArr[key]) stateArr[key] = {}
|
if (!stateArr[key]) stateArr[key] = {}
|
||||||
stateArr[key][type] = this.e
|
stateArr[key][type] = this.e
|
||||||
|
@ -78,12 +77,12 @@ export default class plugin {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
getContext () {
|
getContext() {
|
||||||
let key = this.conKey()
|
let key = this.conKey()
|
||||||
return stateArr[key]
|
return stateArr[key]
|
||||||
}
|
}
|
||||||
|
|
||||||
getContextGroup () {
|
getContextGroup() {
|
||||||
let key = this.conKey(true)
|
let key = this.conKey(true)
|
||||||
return stateArr[key]
|
return stateArr[key]
|
||||||
}
|
}
|
||||||
|
@ -92,7 +91,7 @@ export default class plugin {
|
||||||
* @param type 执行方法
|
* @param type 执行方法
|
||||||
* @param isGroup 是否群聊
|
* @param isGroup 是否群聊
|
||||||
*/
|
*/
|
||||||
finish (type, isGroup = false) {
|
finish(type, isGroup = false) {
|
||||||
if (stateArr[this.conKey(isGroup)] && stateArr[this.conKey(isGroup)][type]) {
|
if (stateArr[this.conKey(isGroup)] && stateArr[this.conKey(isGroup)][type]) {
|
||||||
delete stateArr[this.conKey(isGroup)][type]
|
delete stateArr[this.conKey(isGroup)][type]
|
||||||
}
|
}
|
||||||
|
|
|
@ -101,6 +101,10 @@ Bot.adapter.push(new class stdinAdapter {
|
||||||
|
|
||||||
pickFriend() {
|
pickFriend() {
|
||||||
return {
|
return {
|
||||||
|
user_id: this.id,
|
||||||
|
nickname: this.name,
|
||||||
|
group_id: this.id,
|
||||||
|
group_name: this.name,
|
||||||
sendMsg: msg => this.sendMsg(msg),
|
sendMsg: msg => this.sendMsg(msg),
|
||||||
recallMsg: message_id => this.recallMsg(message_id),
|
recallMsg: message_id => this.recallMsg(message_id),
|
||||||
makeForwardMsg: Bot.makeForwardMsg,
|
makeForwardMsg: Bot.makeForwardMsg,
|
||||||
|
@ -116,7 +120,7 @@ Bot.adapter.push(new class stdinAdapter {
|
||||||
user_id: this.id,
|
user_id: this.id,
|
||||||
post_type: "message",
|
post_type: "message",
|
||||||
message_type: "private",
|
message_type: "private",
|
||||||
sender: { nickname: this.name },
|
sender: { user_id: this.id, nickname: this.name },
|
||||||
message: [{ type: "text", text: msg }],
|
message: [{ type: "text", text: msg }],
|
||||||
raw_message: msg,
|
raw_message: msg,
|
||||||
friend: this.pickFriend(),
|
friend: this.pickFriend(),
|
||||||
|
@ -135,18 +139,17 @@ Bot.adapter.push(new class stdinAdapter {
|
||||||
stat: { start_time: Date.now()/1000 },
|
stat: { start_time: Date.now()/1000 },
|
||||||
version: { id: this.id, name: this.name },
|
version: { id: this.id, name: this.name },
|
||||||
pickFriend: () => this.pickFriend(),
|
pickFriend: () => this.pickFriend(),
|
||||||
pickUser: () => this.pickFriend(),
|
get pickUser() { return this.pickFriend },
|
||||||
pickMember: () => this.pickFriend(),
|
get pickMember() { return this.pickFriend },
|
||||||
pickGroup: () => this.pickFriend(),
|
get pickGroup() { return this.pickFriend },
|
||||||
|
|
||||||
fl: new Map().set(this.id, {
|
fl: new Map().set(this.id, {
|
||||||
user_id: this.id,
|
user_id: this.id,
|
||||||
nickname: this.name,
|
nickname: this.name,
|
||||||
}),
|
|
||||||
gl: new Map().set(this.id, {
|
|
||||||
group_id: this.id,
|
group_id: this.id,
|
||||||
group_name: this.name,
|
group_name: this.name,
|
||||||
}),
|
}),
|
||||||
|
get gl() { return this.fl },
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!Bot.uin.includes(this.id))
|
if (!Bot.uin.includes(this.id))
|
||||||
|
|
|
@ -301,9 +301,8 @@ Bot.adapter.push(new class ComWeChatAdapter {
|
||||||
get nickname() { return this.info.user_name },
|
get nickname() { return this.info.user_name },
|
||||||
get avatar() { return this.info["wx.avatar"] },
|
get avatar() { return this.info["wx.avatar"] },
|
||||||
|
|
||||||
pickUser: user_id => this.pickFriend(data, user_id),
|
|
||||||
pickFriend: user_id => this.pickFriend(data, user_id),
|
pickFriend: user_id => this.pickFriend(data, user_id),
|
||||||
|
get pickUser() { return this.pickFriend },
|
||||||
getFriendArray: () => this.getFriendArray(data),
|
getFriendArray: () => this.getFriendArray(data),
|
||||||
getFriendList: () => this.getFriendList(data),
|
getFriendList: () => this.getFriendList(data),
|
||||||
getFriendMap: () => this.getFriendMap(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),
|
pickMember: (group_id, user_id) => this.pickMember(data, group_id, user_id),
|
||||||
pickGroup: group_id => this.pickGroup(data, group_id),
|
pickGroup: group_id => this.pickGroup(data, group_id),
|
||||||
|
|
||||||
getGroupArray: () => this.getGroupArray(data),
|
getGroupArray: () => this.getGroupArray(data),
|
||||||
getGroupList: () => this.getGroupList(data),
|
getGroupList: () => this.getGroupList(data),
|
||||||
getGroupMap: () => this.getGroupMap(data),
|
getGroupMap: () => this.getGroupMap(data),
|
||||||
|
|
|
@ -168,12 +168,12 @@ Bot.adapter.push(new class GSUIDCoreAdapter {
|
||||||
name: this.name,
|
name: this.name,
|
||||||
},
|
},
|
||||||
pickFriend: user_id => this.pickFriend(data.self_id, user_id),
|
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),
|
pickMember: (group_id, user_id) => this.pickMember(data.self_id, group_id, user_id),
|
||||||
pickGroup: group_id => this.pickGroup(data.self_id, group_id),
|
pickGroup: group_id => this.pickGroup(data.self_id, group_id),
|
||||||
fl: new Map(),
|
fl: new Map(),
|
||||||
gl: new Map(),
|
gl: new Map(),
|
||||||
}
|
}
|
||||||
Bot[data.self_id].pickUser = Bot[data.self_id].pickFriend
|
|
||||||
|
|
||||||
if (!Bot.uin.includes(data.self_id))
|
if (!Bot.uin.includes(data.self_id))
|
||||||
Bot.uin.push(data.self_id)
|
Bot.uin.push(data.self_id)
|
||||||
|
|
|
@ -576,9 +576,8 @@ Bot.adapter.push(new class gocqhttpAdapter {
|
||||||
setProfile: profile => this.setProfile(data, profile),
|
setProfile: profile => this.setProfile(data, profile),
|
||||||
setNickname: nickname => this.setProfile(data, { nickname }),
|
setNickname: nickname => this.setProfile(data, { nickname }),
|
||||||
|
|
||||||
pickUser: user_id => this.pickFriend(data, user_id),
|
|
||||||
pickFriend: user_id => this.pickFriend(data, user_id),
|
pickFriend: user_id => this.pickFriend(data, user_id),
|
||||||
|
get pickUser() { return this.pickFriend },
|
||||||
getFriendArray: () => this.getFriendArray(data),
|
getFriendArray: () => this.getFriendArray(data),
|
||||||
getFriendList: () => this.getFriendList(data),
|
getFriendList: () => this.getFriendList(data),
|
||||||
getFriendMap: () => this.getFriendMap(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),
|
pickMember: (group_id, user_id) => this.pickMember(data, group_id, user_id),
|
||||||
pickGroup: group_id => this.pickGroup(data, group_id),
|
pickGroup: group_id => this.pickGroup(data, group_id),
|
||||||
|
|
||||||
getGroupArray: () => this.getGroupArray(data),
|
getGroupArray: () => this.getGroupArray(data),
|
||||||
getGroupList: () => this.getGroupList(data),
|
getGroupList: () => this.getGroupList(data),
|
||||||
getGroupMap: () => this.getGroupMap(data),
|
getGroupMap: () => this.getGroupMap(data),
|
||||||
|
|
Loading…
Reference in New Issue