From a2d06a4aacd963aae58c0ee66da4f6329f040411 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BA=90=E6=96=87=E9=9B=A8?= <41315874+fumiama@users.noreply.github.com> Date: Tue, 17 Oct 2023 00:27:40 +0900 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96log=E6=89=93=E5=8D=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- event.go | 5 +- openapi_message.go | 123 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 127 insertions(+), 1 deletion(-) diff --git a/event.go b/event.go index 58ac060..1d63979 100644 --- a/event.go +++ b/event.go @@ -74,7 +74,10 @@ func (bot *Bot) processEvent(payload *WebsocketPayload) { switch tp { case "Message": ctx.Message = (*Message)(x.UnsafePointer()) - log.Infoln(getLogHeader(), "收到 Guild:", ctx.Message.GuildID, ", Channel:", ctx.Message.ChannelID, "消息", ctx.Message.Author.ID, ":", ctx.Message.Content) + if ctx.Message.MentionEveryone { + ctx.IsToMe = true + } + log.Infoln(getLogHeader(), "=>", ctx.Message) } go match(ctx, matchers) } diff --git a/openapi_message.go b/openapi_message.go index b711580..9198224 100644 --- a/openapi_message.go +++ b/openapi_message.go @@ -3,10 +3,12 @@ package nano import ( "encoding/json" "reflect" + "strconv" "strings" "time" "github.com/pkg/errors" + "github.com/sirupsen/logrus" ) var ( @@ -37,6 +39,71 @@ type Message struct { } `json:"data,omitempty"` } +// "=> ギルド:", ctx.Message.GuildID+", 频道:", ctx.Message.ChannelID+", 用户:", ctx.Message.Author.Username+"("+ctx.Message.Author.ID+"), 内容:", ctx.Message.Content +func (m *Message) String() string { + sb := strings.Builder{} + sb.WriteByte('[') + sb.WriteString(m.SeqInChannel) + sb.WriteByte(']') + sb.WriteString(" ギルド: ") + sb.WriteString(m.GuildID) + if m.SrcGuildID != "" { + sb.WriteString(", 元ギルド: ") + sb.WriteString(m.SrcGuildID) + } + sb.WriteString(", 频道: ") + sb.WriteString(m.ChannelID) + if m.Author != nil { + sb.WriteString(", 用户: ") + sb.WriteString(m.Author.Username) + sb.WriteByte('(') + sb.WriteString(m.Author.ID) + sb.WriteByte(')') + if m.Author.Bot { + sb.WriteString("(机器人)") + } + } else { + sb.WriteString(", 用户: 未知") + } + if m.Content == "" { + sb.WriteString("无文本") + } else { + sb.WriteString("文本: ") + if m.MentionEveryone { + sb.WriteString("[@全体]") + } + sb.WriteString(m.Content) + } + if len(m.Attachments) > 0 { + sb.WriteString(", 附加: ") + for _, a := range m.Attachments { + sb.WriteString("') + } + } + if len(m.Embeds) > 0 { + for _, e := range m.Embeds { + sb.WriteString(", 嵌入: <标题:") + sb.WriteString(e.Title) + sb.WriteString(",提示:") + sb.WriteString(e.Prompt) + sb.WriteByte('>') + } + } + if m.Ark != nil { + sb.WriteString(", 模版: ") + sb.WriteString(strconv.Itoa(m.Ark.TemplateID)) + } + if m.MessageReference != nil { + sb.WriteString(", 回复: ") + sb.WriteString(m.MessageReference.MessageID) + } + return sb.String() +} + // MessageEmbed https://bot.q.qq.com/wiki/develop/api/openapi/message/model.html#messageembed type MessageEmbed struct { Title string `json:"title"` @@ -137,6 +204,60 @@ type MessagePost struct { KeyBoard *MessageKeyboard `json:"keyboard,omitempty"` } +func (mp *MessagePost) String() string { + sb := strings.Builder{} + if mp.Content == "" { + sb.WriteString("无文本") + } else { + sb.WriteString("文本: ") + sb.WriteString(mp.Content) + } + if mp.ReplyMessageID != "" { + sb.WriteString(", 回应消息: ") + sb.WriteString(mp.ReplyMessageID) + } + if mp.ReplyMessageID != "" { + sb.WriteString(", 回应事件: ") + sb.WriteString(mp.ReplyEventID) + } + if mp.Embed != nil { + sb.WriteString(", 嵌入: <标题:") + sb.WriteString(mp.Embed.Title) + sb.WriteString(",提示:") + sb.WriteString(mp.Embed.Prompt) + sb.WriteByte('>') + } + if mp.Ark != nil { + sb.WriteString(", 模版: ") + sb.WriteString(strconv.Itoa(mp.Ark.TemplateID)) + } + if mp.MessageReference != nil { + sb.WriteString(", 回复: ") + sb.WriteString(mp.MessageReference.MessageID) + } + if mp.Image != "" { + sb.WriteString(", 图片URL:") + sb.WriteString(mp.Image) + } + if mp.ImageFile != "" { + sb.WriteString(", 图片内容:") + x := mp.ImageFile + if len(x) > 64 { + x = x[:64] + "..." + } + sb.WriteString(x) + } + if mp.Markdown != nil { + sb.WriteString(", MD模版: ") + sb.WriteString(strconv.Itoa(mp.Markdown.TemplateID)) + } + if mp.KeyBoard != nil { + sb.WriteString(", KB模版: ") + sb.WriteString(mp.KeyBoard.ID) + } + return sb.String() +} + func (bot *Bot) postMessageTo(ep string, content *MessagePost) (*Message, error) { if content.ImageFile == "" { return bot.postOpenAPIofMessage(ep, "", WriteBodyFromJSON(content)) @@ -178,6 +299,7 @@ func (bot *Bot) postMessageTo(ep string, content *MessagePost) (*Message, error) // // https://bot.q.qq.com/wiki/develop/api/openapi/message/post_messages.html func (bot *Bot) PostMessageToChannel(id string, content *MessagePost) (*Message, error) { + logrus.Infoln(getLogHeader(), "<= 频道:", id+",", content) return bot.postMessageTo("/channels/"+id+"/messages", content) } @@ -185,6 +307,7 @@ func (bot *Bot) PostMessageToChannel(id string, content *MessagePost) (*Message, // // https://bot.q.qq.com/wiki/develop/api/openapi/message/delete_message.html func (bot *Bot) DeleteMessageInChannel(channelid, messageid string, hidetip bool) error { + logrus.Infoln(getLogHeader(), "