From a1056a55562825bacd0bffa5c8269e2397112c92 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Wed, 12 Feb 2025 11:41:49 +0800 Subject: [PATCH] =?UTF-8?q?=E9=80=BB=E8=BE=91=E9=94=99=E8=AF=AF=E5=8F=91?= =?UTF-8?q?=E9=80=81=E5=88=B0=E9=A3=9E=E4=B9=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/GoUtil/feishu.go | 48 +++++++++++++++++++++++++++++++++++++ src/server/game/external.go | 4 +++- 2 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 src/server/GoUtil/feishu.go diff --git a/src/server/GoUtil/feishu.go b/src/server/GoUtil/feishu.go new file mode 100644 index 00000000..36d6416b --- /dev/null +++ b/src/server/GoUtil/feishu.go @@ -0,0 +1,48 @@ +package GoUtil + +import ( + "bytes" + "encoding/json" + "fmt" + "net/http" +) + +const ( + FEISHU_WEBHOOK = "https://open.feishu.cn/open-apis/bot/v2/hook/70e24a79-b019-434a-b4d1-4592bbf7c311" +) + +func SendFeishuMsg(msg string) error { + // 创建请求体 + payload := map[string]interface{}{ + "msg_type": "text", + "content": map[string]string{ + "text": msg, + }, + } + payloadBytes, err := json.Marshal(payload) + if err != nil { + return err + } + + // 创建HTTP请求 + req, err := http.NewRequest("POST", FEISHU_WEBHOOK, bytes.NewBuffer(payloadBytes)) + if err != nil { + return err + } + req.Header.Set("Content-Type", "application/json") + + // 发送请求 + client := &http.Client{} + resp, err := client.Do(req) + if err != nil { + return err + } + defer resp.Body.Close() + + // 检查响应状态码 + if resp.StatusCode != http.StatusOK { + return fmt.Errorf("failed to send message, status code: %d", resp.StatusCode) + } + + return nil +} diff --git a/src/server/game/external.go b/src/server/game/external.go index 556693d6..d6d28051 100644 --- a/src/server/game/external.go +++ b/src/server/game/external.go @@ -1,6 +1,7 @@ package game import ( + "fmt" "reflect" "server/GoUtil" "server/MergeConst" @@ -159,7 +160,8 @@ func HandleClientReq(args []interface{}) { backup := p.(*Player).BackUp() // 备份当前的 Player 值 defer func() { if r := recover(); r != nil { - log.Debug("uid : %d, func : %s, fatal : %s", p.(*Player).M_DwUin, m.GetFunc(), r) + log.Error("uid : %d, func : %s, fatal : %s", p.(*Player).M_DwUin, m.GetFunc(), r) + GoUtil.SendFeishuMsg(fmt.Sprintf("uid : %d, func : %s, fatal : %s", p.(*Player).M_DwUin, m.GetFunc(), r)) p.(*Player).Recover(backup) //还原Player的数据 } p.(*Player).lock.Unlock() //解锁