细节优化,新增 发送文件
This commit is contained in:
parent
17406bd8db
commit
853442a5e8
|
@ -1,5 +1,7 @@
|
|||
import { WebSocketServer } from "ws"
|
||||
import { randomUUID } from "crypto"
|
||||
import path from "node:path"
|
||||
import fs from "node:fs"
|
||||
|
||||
export default class ComWeChatAdapter {
|
||||
toStr(data) {
|
||||
|
@ -30,12 +32,24 @@ export default class ComWeChatAdapter {
|
|||
resolve({ ...data, ...data.data })))
|
||||
}
|
||||
|
||||
uploadFile(data, file) {
|
||||
return data.sendApi("upload_file", {
|
||||
type: "data",
|
||||
data: file.replace(/^base64:\/\//, ""),
|
||||
name: randomUUID(),
|
||||
})
|
||||
uploadFile(data, file, name) {
|
||||
const opts = { name }
|
||||
|
||||
if (file.match(/^https?:\/\//)) {
|
||||
opts.type = "url"
|
||||
opts.url = file
|
||||
} else if (file.match(/^base64:\/\//)) {
|
||||
opts.type = "data"
|
||||
opts.data = file.replace(/^base64:\/\//, "")
|
||||
} else if (fs.existsSync(file)) {
|
||||
opts.type = "data",
|
||||
opts.data = fs.readFileSync(file).toString("base64")
|
||||
} else {
|
||||
opts.type = "path"
|
||||
opts.path = file
|
||||
}
|
||||
|
||||
return data.sendApi("upload_file", opts)
|
||||
}
|
||||
|
||||
async makeMsg(data, msg) {
|
||||
|
@ -48,7 +62,7 @@ export default class ComWeChatAdapter {
|
|||
else if (!i.data)
|
||||
i = { type: i.type, data: { ...i, type: undefined }}
|
||||
if (i.data.file)
|
||||
i.data = { file_id: (await this.uploadFile(data, i.data.file)).file_id }
|
||||
i.data = { file_id: (await this.uploadFile(data, i.data.file, randomUUID())).file_id }
|
||||
switch (i.type) {
|
||||
case "at":
|
||||
if (i.data.qq == "all")
|
||||
|
@ -66,6 +80,9 @@ export default class ComWeChatAdapter {
|
|||
}
|
||||
|
||||
async sendFriendMsg(data, msg) {
|
||||
if (msg?.type == "node")
|
||||
return this.sendForwardMsg(msg => this.sendFriendMsg(data, msg), msg.data)
|
||||
|
||||
logger.info(`${logger.blue(`[${data.self_id}]`)} 发送好友消息:[${data.user_id}] ${this.makeLog(msg)}`)
|
||||
return data.sendApi("send_message", {
|
||||
detail_type: "private",
|
||||
|
@ -75,6 +92,9 @@ export default class ComWeChatAdapter {
|
|||
}
|
||||
|
||||
async sendGroupMsg(data, msg) {
|
||||
if (msg?.type == "node")
|
||||
return this.sendForwardMsg(msg => this.sendGroupMsg(data, msg), msg.data)
|
||||
|
||||
logger.info(`${logger.blue(`[${data.self_id}]`)} 发送群消息:[${data.group_id}] ${this.makeLog(msg)}`)
|
||||
return data.sendApi("send_message", {
|
||||
detail_type: "group",
|
||||
|
@ -83,7 +103,7 @@ export default class ComWeChatAdapter {
|
|||
})
|
||||
}
|
||||
|
||||
async makeForwardMsg(send, msg) {
|
||||
async sendForwardMsg(send, msg) {
|
||||
const messages = []
|
||||
for (const i of msg)
|
||||
messages.push(await send(i.message))
|
||||
|
@ -178,6 +198,51 @@ export default class ComWeChatAdapter {
|
|||
})
|
||||
}
|
||||
|
||||
async sendFile(data, send, file, name) {
|
||||
return send(segment.custom("file", {
|
||||
file_id: (await this.uploadFile(data, file, name || path.basename(file))).file_id
|
||||
}))
|
||||
}
|
||||
|
||||
pickFriend(data, user_id) {
|
||||
const i = { ...data, user_id }
|
||||
return {
|
||||
sendMsg: msg => this.sendFriendMsg(i, msg),
|
||||
recallMsg: () => false,
|
||||
makeForwardMsg: Bot.makeForwardMsg,
|
||||
sendForwardMsg: msg => this.sendForwardMsg(msg => this.sendFriendMsg(i, msg), msg),
|
||||
sendFile: (file, name) => this.sendFile(i, msg => this.sendFriendMsg(i, msg), file, name),
|
||||
getInfo: () => this.getFriendInfo(i),
|
||||
getAvatarUrl: async () => (await this.getFriendInfo(i))["wx.avatar"],
|
||||
}
|
||||
}
|
||||
|
||||
pickMember(data, group_id, user_id) {
|
||||
const i = { ...data, group_id, user_id }
|
||||
return {
|
||||
...this.pickFriend(i, user_id),
|
||||
getInfo: () => this.getGroupMemberInfo(i),
|
||||
getAvatarUrl: async () => (await this.getGroupMemberInfo(i))["wx.avatar"],
|
||||
}
|
||||
}
|
||||
|
||||
pickGroup(data, group_id) {
|
||||
const i = { ...data, group_id }
|
||||
return {
|
||||
sendMsg: msg => this.sendGroupMsg(i, msg),
|
||||
recallMsg: () => false,
|
||||
makeForwardMsg: Bot.makeForwardMsg,
|
||||
sendForwardMsg: msg => this.sendForwardMsg(msg => this.sendGroupMsg(i, msg), msg),
|
||||
sendFile: (file, name) => this.sendFile(i, msg => this.sendGroupMsg(i, msg), file, name),
|
||||
getInfo: () => this.getGroupInfo(i),
|
||||
getAvatarUrl: async () => (await this.getGroupInfo(i))["wx.avatar"],
|
||||
getMemberArray: () => this.getGroupMemberArray(i),
|
||||
getMemberList: () => this.getGroupMemberList(i),
|
||||
getMemberMap: () => this.getGroupMemberMap(i),
|
||||
pickMember: user_id => this.pickMember(i, i.group_id, user_id),
|
||||
}
|
||||
}
|
||||
|
||||
async connect(data) {
|
||||
const status = await data.sendApi("get_status", {})
|
||||
for (const bot of status.bots)
|
||||
|
@ -188,44 +253,14 @@ export default class ComWeChatAdapter {
|
|||
version: data.version,
|
||||
stat: { start_time: data.time },
|
||||
|
||||
pickFriend: user_id => {
|
||||
const i = { ...data, user_id }
|
||||
return {
|
||||
sendMsg: msg => this.sendFriendMsg(i, msg),
|
||||
recallMsg: () => false,
|
||||
makeForwardMsg: msg => this.makeForwardMsg(msg => this.sendFriendMsg(i, msg), msg),
|
||||
getInfo: () => this.getFriendInfo(i),
|
||||
getAvatarUrl: async () => (await this.getFriendInfo(i))["wx.avatar"],
|
||||
}
|
||||
},
|
||||
pickFriend: user_id => this.pickFriend(data, user_id),
|
||||
|
||||
getFriendArray: () => this.getFriendArray(data),
|
||||
getFriendList: () => this.getFriendList(data),
|
||||
getFriendMap: () => this.getFriendMap(data),
|
||||
|
||||
pickMember: (group_id, user_id) => {
|
||||
const i = { ...data, group_id, user_id }
|
||||
return {
|
||||
...Bot[data.self_id].pickFriend(user_id),
|
||||
getInfo: () => this.getGroupMemberInfo(i),
|
||||
getAvatarUrl: async () => (await this.getGroupMemberInfo(i))["wx.avatar"],
|
||||
}
|
||||
},
|
||||
|
||||
pickGroup: group_id => {
|
||||
const i = { ...data, group_id }
|
||||
return {
|
||||
sendMsg: msg => this.sendGroupMsg(i, msg),
|
||||
recallMsg: () => false,
|
||||
makeForwardMsg: msg => this.makeForwardMsg(msg => this.sendGroupMsg(i, msg), msg),
|
||||
getInfo: () => this.getGroupInfo(i),
|
||||
getAvatarUrl: async () => (await this.getGroupInfo(i))["wx.avatar"],
|
||||
getMemberArray: () => this.getGroupMemberArray(i),
|
||||
getMemberList: () => this.getGroupMemberList(i),
|
||||
getMemberMap: () => this.getGroupMemberMap(i),
|
||||
pickMember: user_id => Bot[data.self_id].pickMember(i.group_id, user_id),
|
||||
}
|
||||
},
|
||||
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),
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
import { WebSocketServer } from "ws"
|
||||
import { randomUUID } from "crypto"
|
||||
import path from "node:path"
|
||||
|
||||
export default class gocqhttpAdapter {
|
||||
toStr(data) {
|
||||
|
@ -47,6 +48,9 @@ export default class gocqhttpAdapter {
|
|||
}
|
||||
|
||||
sendFriendMsg(data, msg) {
|
||||
if (msg?.type == "node")
|
||||
return this.sendFriendForwardMsg(data, msg.data)
|
||||
|
||||
logger.info(`${logger.blue(`[${data.self_id}]`)} 发送好友消息:[${data.user_id}] ${this.makeLog(msg)}`)
|
||||
return data.sendApi("send_msg", {
|
||||
user_id: data.user_id,
|
||||
|
@ -55,6 +59,9 @@ export default class gocqhttpAdapter {
|
|||
}
|
||||
|
||||
sendGroupMsg(data, msg) {
|
||||
if (msg?.type == "node")
|
||||
return this.sendGroupForwardMsg(data, msg.data)
|
||||
|
||||
logger.info(`${logger.blue(`[${data.self_id}]`)} 发送群消息:[${data.group_id}] ${this.makeLog(msg)}`)
|
||||
return data.sendApi("send_msg", {
|
||||
group_id: data.group_id,
|
||||
|
@ -63,6 +70,9 @@ export default class gocqhttpAdapter {
|
|||
}
|
||||
|
||||
sendGuildMsg(data, msg) {
|
||||
if (msg?.type == "node")
|
||||
return this.sendGuildForwardMsg(data, msg.data)
|
||||
|
||||
logger.info(`${logger.blue(`[${data.self_id}]`)} 发送频道消息:[${data.guild_id}-${data.channel_id}] ${this.makeLog(msg)}`)
|
||||
return data.sendApi("send_guild_channel_msg", {
|
||||
guild_id: data.guild_id,
|
||||
|
@ -99,7 +109,7 @@ export default class gocqhttpAdapter {
|
|||
return messages
|
||||
}
|
||||
|
||||
async makeFriendForwardMsg(data, msg) {
|
||||
async sendFriendForwardMsg(data, msg) {
|
||||
logger.info(`${logger.blue(`[${data.self_id}]`)} 发送好友转发消息:[${data.user_id}] ${this.makeLog(msg)}`)
|
||||
msg = await data.sendApi("send_private_forward_msg", {
|
||||
user_id: data.user_id,
|
||||
|
@ -109,7 +119,7 @@ export default class gocqhttpAdapter {
|
|||
return msg
|
||||
}
|
||||
|
||||
async makeGroupForwardMsg(data, msg) {
|
||||
async sendGroupForwardMsg(data, msg) {
|
||||
logger.info(`${logger.blue(`[${data.self_id}]`)} 发送群转发消息:[${data.group_id}] ${this.makeLog(msg)}`)
|
||||
msg = await data.sendApi("send_group_forward_msg", {
|
||||
group_id: data.group_id,
|
||||
|
@ -119,7 +129,7 @@ export default class gocqhttpAdapter {
|
|||
return msg
|
||||
}
|
||||
|
||||
async makeGuildForwardMsg(data, msg) {
|
||||
async sendGuildForwardMsg(data, msg) {
|
||||
const messages = []
|
||||
for (const i of msg)
|
||||
messages.push(await this.sendGuildMsg(data, i.message))
|
||||
|
@ -317,6 +327,165 @@ export default class gocqhttpAdapter {
|
|||
})
|
||||
}
|
||||
|
||||
downloadFile(data, url, thread_count, headers) {
|
||||
return data.sendApi("download_file", {
|
||||
url,
|
||||
thread_count,
|
||||
headers,
|
||||
})
|
||||
}
|
||||
|
||||
async makeFile(data, file, name) {
|
||||
if (!name)
|
||||
name = path.basename(file)
|
||||
if (file.match(/^https?:\/\//))
|
||||
file = (await this.downloadFile(data, file)).file
|
||||
else if (fs.existsSync(file))
|
||||
file = path.resolve(file)
|
||||
return { file, name }
|
||||
}
|
||||
|
||||
async sendFriendFile(data, file, name) {
|
||||
return data.sendApi("upload_private_file", {
|
||||
user_id: data.user_id,
|
||||
...await this.makeFile(data, file, name),
|
||||
})
|
||||
}
|
||||
|
||||
async sendGroupFile(data, file, folder, name) {
|
||||
return data.sendApi("upload_group_file", {
|
||||
group_id: data.group_id,
|
||||
folder,
|
||||
...await this.makeFile(data, file, name),
|
||||
})
|
||||
}
|
||||
|
||||
deleteGroupFile(data, file_id, busid) {
|
||||
return data.sendApi("delete_group_file", {
|
||||
group_id: data.group_id,
|
||||
file_id,
|
||||
busid,
|
||||
})
|
||||
}
|
||||
|
||||
createGroupFileFolder(data, name) {
|
||||
return data.sendApi("create_group_file_folder", {
|
||||
group_id: data.group_id,
|
||||
name,
|
||||
})
|
||||
}
|
||||
|
||||
getGroupFileSystemInfo(data) {
|
||||
return data.sendApi("get_group_file_system_info", {
|
||||
group_id: data.group_id,
|
||||
})
|
||||
}
|
||||
|
||||
getGroupFiles(data, folder_id) {
|
||||
if (folder_id)
|
||||
return data.sendApi("get_group_files_by_folder", {
|
||||
group_id: data.group_id,
|
||||
folder_id,
|
||||
})
|
||||
return data.sendApi("get_group_root_files", {
|
||||
group_id: data.group_id,
|
||||
})
|
||||
}
|
||||
|
||||
getGroupFileUrl(data, file_id, busid) {
|
||||
return data.sendApi("get_group_file_url", {
|
||||
group_id: data.group_id,
|
||||
file_id,
|
||||
busid,
|
||||
})
|
||||
}
|
||||
|
||||
getGroupFs(data) {
|
||||
return {
|
||||
upload: (file, folder, name) => this.sendGroupFile(data, file, folder, name),
|
||||
rm: (file_id, busid) => this.deleteGroupFile(data, file_id, busid),
|
||||
mkdir: name => this.createGroupFileFolder(data, name),
|
||||
df: () => this.getGroupFileSystemInfo(data),
|
||||
ls: folder_id => this.getGroupFiles(data, folder_id),
|
||||
download: (file_id, busid) => this.getGroupFileUrl(data, file_id, busid),
|
||||
}
|
||||
}
|
||||
|
||||
pickFriend(data, user_id) {
|
||||
const i = { ...data, user_id }
|
||||
return {
|
||||
sendMsg: msg => this.sendFriendMsg(i, msg),
|
||||
recallMsg: message_id => this.recallMsg(i, message_id),
|
||||
makeForwardMsg: Bot.makeForwardMsg,
|
||||
sendForwardMsg: msg => this.sendFriendForwardMsg(i, msg),
|
||||
sendFile: (file, name) => this.sendFriendFile(i, file, name),
|
||||
getInfo: () => this.getFriendInfo(i),
|
||||
getAvatarUrl: () => `https://q1.qlogo.cn/g?b=qq&s=0&nk=${i.user_id}`,
|
||||
}
|
||||
}
|
||||
|
||||
pickMember(data, group_id, user_id) {
|
||||
if (typeof group_id == "string" && group_id.match("-")) {
|
||||
group_id = group_id.split("-")
|
||||
const i = { ...data, guild_id: group_id[0], channel_id: group_id[1], user_id }
|
||||
return {
|
||||
...this.pickGroup(i, `${i.guild_id}-${i.channel_id}`),
|
||||
getInfo: () => this.getGuildMemberInfo(i),
|
||||
getAvatarUrl: async () => (await this.getGuildMemberInfo(i)).avatar_url,
|
||||
}
|
||||
} else {
|
||||
const i = { ...data, group_id, user_id }
|
||||
return {
|
||||
...this.pickFriend(i, i.user_id),
|
||||
getInfo: () => this.getGroupMemberInfo(i),
|
||||
poke: () => this.sendGroupMsg(i, segment.poke(i.user_id)),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pickGroup(data, group_id) {
|
||||
if (typeof group_id == "string" && group_id.match("-")) {
|
||||
group_id = group_id.split("-")
|
||||
const i = { ...data, guild_id: group_id[0], channel_id: group_id[1] }
|
||||
return {
|
||||
sendMsg: msg => this.sendGuildMsg(i, msg),
|
||||
recallMsg: message_id => this.recallMsg(i, message_id),
|
||||
makeForwardMsg: Bot.makeForwardMsg,
|
||||
sendForwardMsg: msg => this.sendGuildForwardMsg(i, msg),
|
||||
getInfo: () => this.getGuildInfo(i),
|
||||
getChannelArray: () => this.getGuildChannelArray(i),
|
||||
getChannelList: () => this.getGuildChannelList(i),
|
||||
getChannelMap: () => this.getGuildChannelMap(i),
|
||||
getMemberArray: () => this.getGuildMemberArray(i),
|
||||
getMemberList: () => this.getGuildMemberList(i),
|
||||
getMemberMap: () => this.getGuildMemberMap(i),
|
||||
pickMember: user_id => this.pickMember(i, `${i.guild_id}-${i.channel_id}`, user_id),
|
||||
}
|
||||
}
|
||||
|
||||
const i = { ...data, group_id }
|
||||
return {
|
||||
sendMsg: msg => this.sendGroupMsg(i, msg),
|
||||
recallMsg: message_id => this.recallMsg(i, message_id),
|
||||
makeForwardMsg: Bot.makeForwardMsg,
|
||||
sendForwardMsg: msg => this.sendGroupForwardMsg(i, msg),
|
||||
sendFile: (file, name) => this.sendGroupFile(data, file, undefined, name),
|
||||
getInfo: () => this.getGroupInfo(i),
|
||||
getAvatarUrl: () => `https://p.qlogo.cn/gh/${i.group_id}/${i.group_id}/0`,
|
||||
getMemberArray: () => this.getGroupMemberArray(i),
|
||||
getMemberList: () => this.getGroupMemberList(i),
|
||||
getMemberMap: () => this.getGroupMemberMap(i),
|
||||
pickMember: user_id => this.pickMember(i, i.group_id, user_id),
|
||||
pokeMember: user_id => this.sendGroupMsg(i, segment.poke(user_id)),
|
||||
setName: group_name => this.setGroupName(i, group_name),
|
||||
setAvatar: file => this.setGroupAvatar(i, file),
|
||||
setAdmin: (user_id, enable) => this.setGroupAdmin(i, user_id, enable),
|
||||
setCard: (user_id, card) => this.setGroupCard(i, user_id, card),
|
||||
setTitle: (user_id, special_title, duration) => this.setGroupTitle(i, user_id, special_title, duration),
|
||||
fs: this.getGroupFs(i),
|
||||
}
|
||||
}
|
||||
|
||||
async connect(data) {
|
||||
Bot[data.self_id] = {
|
||||
sendApi: data.sendApi,
|
||||
|
@ -326,78 +495,14 @@ export default class gocqhttpAdapter {
|
|||
recallMsg: message_id => this.recallMsg(data, message_id),
|
||||
getForwardMsg: message_id => this.getForwardMsg(data, message_id),
|
||||
|
||||
pickFriend: user_id => {
|
||||
const i = { ...data, user_id }
|
||||
return {
|
||||
sendMsg: msg => this.sendFriendMsg(i, msg),
|
||||
recallMsg: message_id => this.recallMsg(i, message_id),
|
||||
makeForwardMsg: msg => this.makeFriendForwardMsg(i, msg),
|
||||
getInfo: () => this.getFriendInfo(i),
|
||||
getAvatarUrl: () => `https://q1.qlogo.cn/g?b=qq&s=0&nk=${i.user_id}`,
|
||||
}
|
||||
},
|
||||
pickFriend: user_id => this.pickFriend(data, user_id),
|
||||
|
||||
getFriendArray: () => this.getFriendArray(data),
|
||||
getFriendList: () => this.getFriendList(data),
|
||||
getFriendMap: () => this.getFriendMap(data),
|
||||
|
||||
pickMember: (group_id, user_id) => {
|
||||
if (typeof group_id == "string" && group_id.match("-")) {
|
||||
group_id = group_id.split("-")
|
||||
const i = { ...data, guild_id: group_id[0], channel_id: group_id[1], user_id }
|
||||
return {
|
||||
...Bot[data.self_id].pickGroup(`${i.guild_id}-${i.channel_id}`),
|
||||
getInfo: () => this.getGuildMemberInfo(i),
|
||||
getAvatarUrl: async () => (await this.getGuildMemberInfo(i)).avatar_url,
|
||||
}
|
||||
} else {
|
||||
const i = { ...data, group_id, user_id }
|
||||
return {
|
||||
...Bot[data.self_id].pickFriend(i.user_id),
|
||||
getInfo: () => this.getGroupMemberInfo(i),
|
||||
poke: () => this.sendGroupMsg(i, segment.poke(i.user_id)),
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
pickGroup: group_id => {
|
||||
if (typeof group_id == "string" && group_id.match("-")) {
|
||||
group_id = group_id.split("-")
|
||||
const i = { ...data, guild_id: group_id[0], channel_id: group_id[1] }
|
||||
return {
|
||||
sendMsg: msg => this.sendGuildMsg(i, msg),
|
||||
recallMsg: message_id => this.recallMsg(i, message_id),
|
||||
makeForwardMsg: msg => this.makeGuildForwardMsg(i, msg),
|
||||
getInfo: () => this.getGuildInfo(i),
|
||||
getChannelArray: () => this.getGuildChannelArray(i),
|
||||
getChannelList: () => this.getGuildChannelList(i),
|
||||
getChannelMap: () => this.getGuildChannelMap(i),
|
||||
getMemberArray: () => this.getGuildMemberArray(i),
|
||||
getMemberList: () => this.getGuildMemberList(i),
|
||||
getMemberMap: () => this.getGuildMemberMap(i),
|
||||
pickMember: user_id => Bot[data.self_id].pickMember(`${i.guild_id}-${i.channel_id}`, user_id),
|
||||
}
|
||||
}
|
||||
|
||||
const i = { ...data, group_id }
|
||||
return {
|
||||
sendMsg: msg => this.sendGroupMsg(i, msg),
|
||||
recallMsg: message_id => this.recallMsg(i, message_id),
|
||||
makeForwardMsg: msg => this.makeGroupForwardMsg(i, msg),
|
||||
getInfo: () => this.getGroupInfo(i),
|
||||
getAvatarUrl: () => `https://p.qlogo.cn/gh/${i.group_id}/${i.group_id}/0`,
|
||||
getMemberArray: () => this.getGroupMemberArray(i),
|
||||
getMemberList: () => this.getGroupMemberList(i),
|
||||
getMemberMap: () => this.getGroupMemberMap(i),
|
||||
pickMember: user_id => Bot[data.self_id].pickMember(i.group_id, user_id),
|
||||
pokeMember: user_id => this.sendGroupMsg(i, segment.poke(user_id)),
|
||||
setName: group_name => this.setGroupName(i, group_name),
|
||||
setAvatar: file => this.setGroupAvatar(i, file),
|
||||
setAdmin: (user_id, enable) => this.setGroupAdmin(i, user_id, enable),
|
||||
setCard: (user_id, card) => this.setGroupCard(i, user_id, card),
|
||||
setTitle: (user_id, special_title, duration) => this.setGroupTitle(i, user_id, special_title, duration),
|
||||
}
|
||||
},
|
||||
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),
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
import fs from "node:fs"
|
||||
import path from "node:path"
|
||||
|
||||
export default class stdinAdapter {
|
||||
async makeBuffer(file) {
|
||||
|
@ -43,6 +44,9 @@ export default class stdinAdapter {
|
|||
break
|
||||
case "at":
|
||||
break
|
||||
case "node":
|
||||
this.sendForwardMsg(i.data)
|
||||
break
|
||||
default:
|
||||
i = JSON.stringify(i)
|
||||
if (i.match("\n"))
|
||||
|
@ -57,7 +61,7 @@ export default class stdinAdapter {
|
|||
logger.info(`${logger.blue(`[stdin]`)} 撤回消息:${message_id}`)
|
||||
}
|
||||
|
||||
makeForwardMsg(msg) {
|
||||
sendForwardMsg(msg) {
|
||||
const messages = []
|
||||
for (const i of msg)
|
||||
messages.push(this.sendMsg(i.message))
|
||||
|
@ -65,6 +69,32 @@ export default class stdinAdapter {
|
|||
return messages
|
||||
}
|
||||
|
||||
async sendFile(file, name) {
|
||||
let buffer
|
||||
if (Buffer.isBuffer(file)) {
|
||||
buffer = file
|
||||
} else if (file.match(/^https?:\/\//)) {
|
||||
buffer = Buffer.from(await (await fetch(file)).arrayBuffer())
|
||||
} else if (!fs.existsSync(file)) {
|
||||
logger.error(`${logger.blue(`[stdin]`)} 发送文件错误:找不到文件 ${logger.red(file)}`)
|
||||
return false
|
||||
}
|
||||
|
||||
const files = `${process.cwd()}/data/${Date.now()}-${name || path.basename(file)}`
|
||||
logger.info(`${logger.blue(`[stdin]`)} 发送文件:${file}\n文件已保存到:${logger.cyan(files)}`)
|
||||
return fs.copyFileSync(buffer || file, files)
|
||||
}
|
||||
|
||||
pickFriend() {
|
||||
return {
|
||||
sendMsg: msg => this.sendMsg(msg),
|
||||
recallMsg: message_id => this.recallMsg(message_id),
|
||||
makeForwardMsg: Bot.makeForwardMsg,
|
||||
sendForwardMsg: msg => this.sendForwardMsg(msg),
|
||||
sendFile: (file, name) => this.sendFile(file, name),
|
||||
}
|
||||
}
|
||||
|
||||
message(msg) {
|
||||
const data = {
|
||||
bot: Bot.stdin,
|
||||
|
@ -89,11 +119,7 @@ export default class stdinAdapter {
|
|||
nickname: "标准输入",
|
||||
stat: { start_time: Date.now()/1000 },
|
||||
version: { impl: "stdin" },
|
||||
pickFriend: () => ({
|
||||
sendMsg: msg => this.sendMsg(msg),
|
||||
recallMsg: message_id => this.recallMsg(message_id),
|
||||
makeForwardMsg: msg => this.makeForwardMsg(msg),
|
||||
}),
|
||||
pickFriend: () => this.pickFriend(),
|
||||
fl: new Map().set("stdin", {}),
|
||||
}
|
||||
Bot.stdin.pickUser = Bot.stdin.pickFriend
|
||||
|
|
|
@ -150,4 +150,9 @@ export default class Yunzai extends EventEmitter {
|
|||
if (msg) return msg
|
||||
}
|
||||
}
|
||||
|
||||
makeForwardMsg(msg) {
|
||||
msg.replace = () => msg
|
||||
return { type: "node", data: msg }
|
||||
}
|
||||
}
|
|
@ -30,15 +30,15 @@
|
|||
"node-schedule": "^2.1.1",
|
||||
"node-xlsx": "^0.23.0",
|
||||
"pm2": "^5.3.0",
|
||||
"puppeteer": "^20.5.0",
|
||||
"puppeteer": "^20.7.2",
|
||||
"redis": "^4.6.7",
|
||||
"sequelize": "^6.31.1",
|
||||
"sequelize": "^6.32.1",
|
||||
"sqlite3": "^5.1.6",
|
||||
"ws": "^8.13.0",
|
||||
"yaml": "^2.3.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"eslint": "^8.41.0",
|
||||
"eslint": "^8.43.0",
|
||||
"eslint-config-standard": "^17.1.0",
|
||||
"eslint-plugin-import": "^2.27.5",
|
||||
"eslint-plugin-n": "^16.0.0",
|
||||
|
|
|
@ -104,11 +104,14 @@ export class update extends plugin {
|
|||
let type = '更新'
|
||||
if (this.e.msg.includes('强制')) {
|
||||
type = '强制更新'
|
||||
cm = `git fetch --all && git reset --hard && ${cm}`
|
||||
cm = `git reset --hard && git pull --rebase --allow-unrelated-histories`
|
||||
}
|
||||
|
||||
if (plugin) {
|
||||
cm = `git -C ./plugins/${plugin}/ pull --no-rebase`
|
||||
if (type == '强制更新')
|
||||
cm = `git -C 'plugins/${plugin}' reset --hard && git -C 'plugins/${plugin}' pull --rebase --allow-unrelated-histories`
|
||||
else
|
||||
cm = `git -C 'plugins/${plugin}' pull --no-rebase`
|
||||
}
|
||||
|
||||
this.oldCommitId = await this.getcommitId(plugin)
|
||||
|
|
Loading…
Reference in New Issue