mirror of
https://github.com/LLOneBot/LLOneBot.git
synced 2024-11-22 01:56:33 +00:00
兼容onebot11
This commit is contained in:
42
src/main.ts
42
src/main.ts
@@ -50,9 +50,8 @@ function startExpress(event: any) {
|
|||||||
app.get('/', (req: any, res: any) => {
|
app.get('/', (req: any, res: any) => {
|
||||||
res.send('llonebot已启动');
|
res.send('llonebot已启动');
|
||||||
})
|
})
|
||||||
// 处理POST请求的路由
|
|
||||||
app.post('/', (req: any, res: any) => {
|
function handlePost(jsonData: any){
|
||||||
let jsonData: PostDataSendMsg = req.body;
|
|
||||||
let resData = {
|
let resData = {
|
||||||
status: 0,
|
status: 0,
|
||||||
retcode: 0,
|
retcode: 0,
|
||||||
@@ -120,8 +119,45 @@ function startExpress(event: any) {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
return resData
|
||||||
|
}
|
||||||
|
// 处理POST请求的路由
|
||||||
|
app.post('/', (req: any, res: any) => {
|
||||||
|
let jsonData: PostDataSendMsg = req.body;
|
||||||
|
let resData = handlePost(jsonData)
|
||||||
res.send(resData)
|
res.send(resData)
|
||||||
});
|
});
|
||||||
|
app.post('/send_private_msg', (req: any, res: any) => {
|
||||||
|
let jsonData: PostDataSendMsg = req.body;
|
||||||
|
jsonData.action = "send_private_msg"
|
||||||
|
let resData = handlePost(jsonData)
|
||||||
|
res.send(resData)
|
||||||
|
})
|
||||||
|
app.post('/send_group_msg', (req: any, res: any) => {
|
||||||
|
let jsonData: PostDataSendMsg = req.body;
|
||||||
|
jsonData.action = "send_group_msg"
|
||||||
|
let resData = handlePost(jsonData)
|
||||||
|
res.send(resData)
|
||||||
|
})
|
||||||
|
app.post('/send_msg', (req: any, res: any) => {
|
||||||
|
let jsonData: PostDataSendMsg = req.body;
|
||||||
|
if (jsonData.message_type == "private"){
|
||||||
|
jsonData.action = "send_private_msg"
|
||||||
|
}
|
||||||
|
else if (jsonData.message_type == "group"){
|
||||||
|
jsonData.action = "send_group_msg"
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if (jsonData.params.group_id){
|
||||||
|
jsonData.action = "send_group_msg"
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
jsonData.action = "send_private_msg"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
let resData = handlePost(jsonData)
|
||||||
|
res.send(resData)
|
||||||
|
})
|
||||||
app.listen(port,"0.0.0.0", () => {
|
app.listen(port,"0.0.0.0", () => {
|
||||||
console.log(`服务器已启动,监听端口 ${port}`);
|
console.log(`服务器已启动,监听端口 ${port}`);
|
||||||
});
|
});
|
||||||
|
@@ -124,6 +124,7 @@ async function forwardMessage(message: MessageElement) {
|
|||||||
let uid = element.textElement.atNtUid
|
let uid = element.textElement.atNtUid
|
||||||
let atMember = await getGroupMember(message.peer.uid, uid)
|
let atMember = await getGroupMember(message.peer.uid, uid)
|
||||||
message_data["data"]["mention"] = atMember!.uin
|
message_data["data"]["mention"] = atMember!.uin
|
||||||
|
message_data["data"]["qq"] = atMember!.uin
|
||||||
}
|
}
|
||||||
} else if (element.textElement) {
|
} else if (element.textElement) {
|
||||||
message_data["type"] = "text"
|
message_data["type"] = "text"
|
||||||
@@ -132,6 +133,7 @@ async function forwardMessage(message: MessageElement) {
|
|||||||
message_data["type"] = "image"
|
message_data["type"] = "image"
|
||||||
message_data["data"]["file_id"] = element.picElement.fileUuid
|
message_data["data"]["file_id"] = element.picElement.fileUuid
|
||||||
message_data["data"]["path"] = element.picElement.sourcePath
|
message_data["data"]["path"] = element.picElement.sourcePath
|
||||||
|
message_data["data"]["file"] = element.picElement.sourcePath
|
||||||
} else if (element.replyElement) {
|
} else if (element.replyElement) {
|
||||||
message_data["type"] = "reply"
|
message_data["type"] = "reply"
|
||||||
message_data["data"]["reply"] = element.replyElement.sourceMsgIdInRecords
|
message_data["data"]["reply"] = element.replyElement.sourceMsgIdInRecords
|
||||||
@@ -156,6 +158,13 @@ async function handleNewMessage(messages: MessageElement[]) {
|
|||||||
async function listenSendMessage(postData: PostDataSendMsg) {
|
async function listenSendMessage(postData: PostDataSendMsg) {
|
||||||
if (postData.action == "send_private_msg" || postData.action == "send_group_msg") {
|
if (postData.action == "send_private_msg" || postData.action == "send_group_msg") {
|
||||||
let peer: Peer | null = null;
|
let peer: Peer | null = null;
|
||||||
|
if (!postData.params){
|
||||||
|
postData.params = {
|
||||||
|
message: postData.message,
|
||||||
|
user_id: postData.user_id,
|
||||||
|
group_id: postData.group_id
|
||||||
|
}
|
||||||
|
}
|
||||||
if (postData.action == "send_private_msg") {
|
if (postData.action == "send_private_msg") {
|
||||||
let friend = getFriend(postData.params.user_id)
|
let friend = getFriend(postData.params.user_id)
|
||||||
if (friend) {
|
if (friend) {
|
||||||
@@ -173,19 +182,31 @@ async function listenSendMessage(postData: PostDataSendMsg) {
|
|||||||
name: group.name,
|
name: group.name,
|
||||||
uid: group.uid
|
uid: group.uid
|
||||||
}
|
}
|
||||||
for (let message of postData.params.message){
|
|
||||||
if (message.type == "text" && message.atType == 2){
|
|
||||||
let atUid = message.atUid
|
|
||||||
let group = await getGroup(postData.params.group_id)
|
|
||||||
let atMember = group.members.find(member => member.uin == atUid)
|
|
||||||
message.atNtUid = atMember.uid
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
console.log("未找到群, 发送群消息失败", postData)
|
console.log("未找到群, 发送群消息失败", postData)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (peer) {
|
if (peer) {
|
||||||
|
for (let message of postData.params.message){
|
||||||
|
if (message.type == "at"){
|
||||||
|
// @ts-ignore
|
||||||
|
message.type = "text"
|
||||||
|
message.atType = 2
|
||||||
|
let atUid = message.data?.qq || message.atUid
|
||||||
|
let group = await getGroup(postData.params.group_id)
|
||||||
|
let atMember = group.members.find(member => member.uin == atUid)
|
||||||
|
message.atNtUid = atMember.uid
|
||||||
|
message.atUid = atUid
|
||||||
|
message.content = `@${atMember.cardName || atMember.nick}`
|
||||||
|
}
|
||||||
|
else if (message.type == "text"){
|
||||||
|
message.content = message.data?.text || message.content
|
||||||
|
}
|
||||||
|
else if (message.type == "image"){
|
||||||
|
message.file = message.data?.file || message.file
|
||||||
|
}
|
||||||
|
}
|
||||||
console.log("发送消息", postData)
|
console.log("发送消息", postData)
|
||||||
window.LLAPI.sendMessage(peer, postData.params.message).then(res => console.log("消息发送成功:", res),
|
window.LLAPI.sendMessage(peer, postData.params.message).then(res => console.log("消息发送成功:", res),
|
||||||
err => console.log("消息发送失败", postData, err))
|
err => console.log("消息发送失败", postData, err))
|
||||||
|
26
src/types.ts
26
src/types.ts
@@ -74,19 +74,35 @@ export type MessageElement = {
|
|||||||
export type SendMessage = {
|
export type SendMessage = {
|
||||||
type: "text",
|
type: "text",
|
||||||
content: string,
|
content: string,
|
||||||
atType?: AtType,
|
data?: {
|
||||||
atUid?: string,
|
text: string, // 纯文本
|
||||||
atNtUid?: string
|
}
|
||||||
} | {
|
} | {
|
||||||
type: "image",
|
type: "image",
|
||||||
file: string, // 本地路径
|
file: string, // 本地路径
|
||||||
|
data?: {
|
||||||
|
file: string // 本地路径
|
||||||
|
}
|
||||||
|
} | {
|
||||||
|
type: "at",
|
||||||
|
atType?: AtType,
|
||||||
|
content?: string,
|
||||||
|
atUid?: string,
|
||||||
|
atNtUid?: string,
|
||||||
|
data?: {
|
||||||
|
qq: string // at的qq号
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export type PostDataSendMsg = {
|
export type PostDataSendMsg = {
|
||||||
action: "send_private_msg" | "send_group_msg" | "get_group_list",
|
action: "send_private_msg" | "send_group_msg" | "get_group_list",
|
||||||
params: {
|
message_type?: "private" | "group"
|
||||||
|
params?: {
|
||||||
|
user_id: string,
|
||||||
|
group_id: string,
|
||||||
|
message: SendMessage[];
|
||||||
|
},
|
||||||
user_id: string,
|
user_id: string,
|
||||||
group_id: string,
|
group_id: string,
|
||||||
message: SendMessage[];
|
message: SendMessage[];
|
||||||
}
|
|
||||||
}
|
}
|
Reference in New Issue
Block a user