-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsender.go
61 lines (55 loc) · 1.45 KB
/
sender.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
package main
import (
"bytes"
"encoding/json"
"errors"
"fmt"
"github.com/sirupsen/logrus"
"net/http"
"strconv"
)
type SendMsgData struct {
MessageType string `json:"message_type"`
UserId string `json:"user_id"`
GroupId string `json:"group_id"`
Message []Message `json:"message"`
AutoEscape bool `json:"auto_escape"`
ReceivedMsg string `json:"-"`
}
type Message struct {
Type string `json:"type" yaml:"type"`
Data map[string]interface{} `json:"data" yaml:"data"`
}
func (data *SendMsgData) Send() error {
var err error
if GlobalConfig.ServeMode == "onebot" {
err = data.sendToOnebot()
} else {
err = data.sendToOpenWechat()
}
return err
}
func (data *SendMsgData) sendToOnebot() error {
replyUrl := GlobalConfig.OneBot11.ServerUrl + "send_msg"
bytesData, err := json.Marshal(data)
if err != nil {
fmt.Println(err.Error())
return err
}
var body = bytes.NewReader(bytesData)
req, err := http.NewRequest("POST", replyUrl, body)
defer req.Body.Close()
req.Header.Add("Content-Type", "application/json; charset=utf-8")
resp, err := OneBotClient.Do(req)
if err != nil {
return err
}
if resp.StatusCode != 200 {
return errors.New("[Sender] reply to " + data.MessageType + " " + data.UserId + " error: " + strconv.FormatInt(int64(resp.StatusCode), 10))
}
logrus.Info("[Sender]Send message success: ", data.Message)
return nil
}
func (data *SendMsgData) sendToOpenWechat() error {
return nil
}