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) => {
|
||||
res.send('llonebot已启动');
|
||||
})
|
||||
// 处理POST请求的路由
|
||||
app.post('/', (req: any, res: any) => {
|
||||
let jsonData: PostDataSendMsg = req.body;
|
||||
|
||||
function handlePost(jsonData: any){
|
||||
let resData = {
|
||||
status: 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)
|
||||
});
|
||||
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", () => {
|
||||
console.log(`服务器已启动,监听端口 ${port}`);
|
||||
});
|
||||
|
@@ -124,6 +124,7 @@ async function forwardMessage(message: MessageElement) {
|
||||
let uid = element.textElement.atNtUid
|
||||
let atMember = await getGroupMember(message.peer.uid, uid)
|
||||
message_data["data"]["mention"] = atMember!.uin
|
||||
message_data["data"]["qq"] = atMember!.uin
|
||||
}
|
||||
} else if (element.textElement) {
|
||||
message_data["type"] = "text"
|
||||
@@ -132,6 +133,7 @@ async function forwardMessage(message: MessageElement) {
|
||||
message_data["type"] = "image"
|
||||
message_data["data"]["file_id"] = element.picElement.fileUuid
|
||||
message_data["data"]["path"] = element.picElement.sourcePath
|
||||
message_data["data"]["file"] = element.picElement.sourcePath
|
||||
} else if (element.replyElement) {
|
||||
message_data["type"] = "reply"
|
||||
message_data["data"]["reply"] = element.replyElement.sourceMsgIdInRecords
|
||||
@@ -156,6 +158,13 @@ async function handleNewMessage(messages: MessageElement[]) {
|
||||
async function listenSendMessage(postData: PostDataSendMsg) {
|
||||
if (postData.action == "send_private_msg" || postData.action == "send_group_msg") {
|
||||
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") {
|
||||
let friend = getFriend(postData.params.user_id)
|
||||
if (friend) {
|
||||
@@ -173,19 +182,31 @@ async function listenSendMessage(postData: PostDataSendMsg) {
|
||||
name: group.name,
|
||||
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 {
|
||||
console.log("未找到群, 发送群消息失败", postData)
|
||||
}
|
||||
}
|
||||
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)
|
||||
window.LLAPI.sendMessage(peer, postData.params.message).then(res => console.log("消息发送成功:", res),
|
||||
err => console.log("消息发送失败", postData, err))
|
||||
|
26
src/types.ts
26
src/types.ts
@@ -74,19 +74,35 @@ export type MessageElement = {
|
||||
export type SendMessage = {
|
||||
type: "text",
|
||||
content: string,
|
||||
atType?: AtType,
|
||||
atUid?: string,
|
||||
atNtUid?: string
|
||||
data?: {
|
||||
text: string, // 纯文本
|
||||
}
|
||||
} | {
|
||||
type: "image",
|
||||
file: string, // 本地路径
|
||||
data?: {
|
||||
file: string // 本地路径
|
||||
}
|
||||
} | {
|
||||
type: "at",
|
||||
atType?: AtType,
|
||||
content?: string,
|
||||
atUid?: string,
|
||||
atNtUid?: string,
|
||||
data?: {
|
||||
qq: string // at的qq号
|
||||
}
|
||||
}
|
||||
|
||||
export type PostDataSendMsg = {
|
||||
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,
|
||||
group_id: string,
|
||||
message: SendMessage[];
|
||||
}
|
Reference in New Issue
Block a user