1
0
mirror of https://github.com/fumiama/NanoBot.git synced 2026-06-12 06:00:29 +08:00

fix: message delete

This commit is contained in:
源文雨
2023-10-18 15:17:30 +09:00
parent 88aede89dc
commit a6a961da65
4 changed files with 37 additions and 45 deletions

View File

@@ -1,5 +1,6 @@
emptyon: emptyon:
- Message - Message
- MessageDelete
- GuildCreate - GuildCreate
- GuildUpdate - GuildUpdate
@@ -12,14 +13,14 @@ emptyon:
- GuildMemberUpdate - GuildMemberUpdate
- GuildMemberRemove - GuildMemberRemove
- MessageCreate #- MessageCreate
- MessageDelete #- MessageDelete
- MessageReactionAdd - MessageReactionAdd
- MessageReactionRemove - MessageReactionRemove
- DirectMessageCreate #- DirectMessageCreate
- DirectMessageDelete #- DirectMessageDelete
- OpenForumThreadCreate - OpenForumThreadCreate
- OpenForumThreadUpdate - OpenForumThreadUpdate
@@ -49,8 +50,8 @@ emptyon:
- AudioOnMic - AudioOnMic
- AudioOffMic - AudioOffMic
- AtMessageCreate #- AtMessageCreate
- PublicMessageDelete #- PublicMessageDelete
ruleon: ruleon:
Message: Message:

View File

@@ -8,6 +8,12 @@ func (e *Engine) OnMessage(rules ...Rule) *Matcher { return e.On("Message", rule
// OnMessage ... // OnMessage ...
func OnMessage(rules ...Rule) *Matcher { return On("Message", rules...) } func OnMessage(rules ...Rule) *Matcher { return On("Message", rules...) }
// OnMessageDelete ...
func (e *Engine) OnMessageDelete(rules ...Rule) *Matcher { return e.On("MessageDelete", rules...) }
// OnMessageDelete ...
func OnMessageDelete(rules ...Rule) *Matcher { return On("MessageDelete", rules...) }
// OnGuildCreate ... // OnGuildCreate ...
func (e *Engine) OnGuildCreate(rules ...Rule) *Matcher { return e.On("GuildCreate", rules...) } func (e *Engine) OnGuildCreate(rules ...Rule) *Matcher { return e.On("GuildCreate", rules...) }
@@ -62,18 +68,6 @@ func (e *Engine) OnGuildMemberRemove(rules ...Rule) *Matcher { return e.On("Guil
// OnGuildMemberRemove ... // OnGuildMemberRemove ...
func OnGuildMemberRemove(rules ...Rule) *Matcher { return On("GuildMemberRemove", rules...) } func OnGuildMemberRemove(rules ...Rule) *Matcher { return On("GuildMemberRemove", rules...) }
// OnMessageCreate ...
func (e *Engine) OnMessageCreate(rules ...Rule) *Matcher { return e.On("MessageCreate", rules...) }
// OnMessageCreate ...
func OnMessageCreate(rules ...Rule) *Matcher { return On("MessageCreate", rules...) }
// OnMessageDelete ...
func (e *Engine) OnMessageDelete(rules ...Rule) *Matcher { return e.On("MessageDelete", rules...) }
// OnMessageDelete ...
func OnMessageDelete(rules ...Rule) *Matcher { return On("MessageDelete", rules...) }
// OnMessageReactionAdd ... // OnMessageReactionAdd ...
func (e *Engine) OnMessageReactionAdd(rules ...Rule) *Matcher { return e.On("MessageReactionAdd", rules...) } func (e *Engine) OnMessageReactionAdd(rules ...Rule) *Matcher { return e.On("MessageReactionAdd", rules...) }
@@ -86,18 +80,6 @@ func (e *Engine) OnMessageReactionRemove(rules ...Rule) *Matcher { return e.On("
// OnMessageReactionRemove ... // OnMessageReactionRemove ...
func OnMessageReactionRemove(rules ...Rule) *Matcher { return On("MessageReactionRemove", rules...) } func OnMessageReactionRemove(rules ...Rule) *Matcher { return On("MessageReactionRemove", rules...) }
// OnDirectMessageCreate ...
func (e *Engine) OnDirectMessageCreate(rules ...Rule) *Matcher { return e.On("DirectMessageCreate", rules...) }
// OnDirectMessageCreate ...
func OnDirectMessageCreate(rules ...Rule) *Matcher { return On("DirectMessageCreate", rules...) }
// OnDirectMessageDelete ...
func (e *Engine) OnDirectMessageDelete(rules ...Rule) *Matcher { return e.On("DirectMessageDelete", rules...) }
// OnDirectMessageDelete ...
func OnDirectMessageDelete(rules ...Rule) *Matcher { return On("DirectMessageDelete", rules...) }
// OnOpenForumThreadCreate ... // OnOpenForumThreadCreate ...
func (e *Engine) OnOpenForumThreadCreate(rules ...Rule) *Matcher { return e.On("OpenForumThreadCreate", rules...) } func (e *Engine) OnOpenForumThreadCreate(rules ...Rule) *Matcher { return e.On("OpenForumThreadCreate", rules...) }
@@ -236,18 +218,6 @@ func (e *Engine) OnAudioOffMic(rules ...Rule) *Matcher { return e.On("AudioOffMi
// OnAudioOffMic ... // OnAudioOffMic ...
func OnAudioOffMic(rules ...Rule) *Matcher { return On("AudioOffMic", rules...) } func OnAudioOffMic(rules ...Rule) *Matcher { return On("AudioOffMic", rules...) }
// OnAtMessageCreate ...
func (e *Engine) OnAtMessageCreate(rules ...Rule) *Matcher { return e.On("AtMessageCreate", rules...) }
// OnAtMessageCreate ...
func OnAtMessageCreate(rules ...Rule) *Matcher { return On("AtMessageCreate", rules...) }
// OnPublicMessageDelete ...
func (e *Engine) OnPublicMessageDelete(rules ...Rule) *Matcher { return e.On("PublicMessageDelete", rules...) }
// OnPublicMessageDelete ...
func OnPublicMessageDelete(rules ...Rule) *Matcher { return On("PublicMessageDelete", rules...) }
// OnMessagePrefix ... // OnMessagePrefix ...
func OnMessagePrefix(prefix string, rules ...Rule) *Matcher { func OnMessagePrefix(prefix string, rules ...Rule) *Matcher {
return defaultEngine.OnMessagePrefix(prefix, rules...) return defaultEngine.OnMessagePrefix(prefix, rules...)

View File

@@ -52,6 +52,11 @@ func (bot *Bot) processEvent(payload *WebsocketPayload) {
fallthrough fallthrough
case "MessageCreate", "AtMessageCreate": case "MessageCreate", "AtMessageCreate":
tp = "Message" tp = "Message"
case "DirectMessageDelete":
ctx.IsToMe = true
fallthrough
case "MessageDelete", "PublicMessageDelete":
tp = "MessageDelete"
} }
matcherLock.RLock() matcherLock.RLock()
n := len(matcherMap[tp]) n := len(matcherMap[tp])
@@ -78,6 +83,19 @@ func (bot *Bot) processEvent(payload *WebsocketPayload) {
ctx.IsToMe = true ctx.IsToMe = true
} }
log.Infoln(getLogHeader(), "=>", ctx.Message) log.Infoln(getLogHeader(), "=>", ctx.Message)
case "MessageDelete":
mdl := (*MessageDelete)(x.UnsafePointer())
opmember, err := ctx.GetGuildMemberOf(mdl.Message.GuildID, mdl.OpUser.ID)
if err != nil {
log.Warnln(getLogHeader(), "获取撤回消息者详情错误:", err)
return
}
ctx.Message = (*MessageDelete)(x.UnsafePointer()).Message
ctx.Message.Member = &Member{
GuildID: mdl.Message.GuildID,
User: ctx.Message.Author,
}
ctx.Message.Author = opmember.User
} }
go match(ctx, matchers) go match(ctx, matchers)
} }

View File

@@ -16,9 +16,12 @@ func newctrl(service string, o *ctrl.Options[*Ctx]) Rule {
c := m.NewControl(service, o) c := m.NewControl(service, o)
return func(ctx *Ctx) bool { return func(ctx *Ctx) bool {
ctx.State["manager"] = c ctx.State["manager"] = c
gid, _ := strconv.ParseUint(ctx.Message.ChannelID, 10, 64) if ctx.Message != nil {
uid, _ := strconv.ParseUint(ctx.Message.Author.ID, 10, 64) gid, _ := strconv.ParseUint(ctx.Message.ChannelID, 10, 64)
return c.Handler(int64(gid), int64(uid)) uid, _ := strconv.ParseUint(ctx.Message.Author.ID, 10, 64)
return c.Handler(int64(gid), int64(uid))
}
return false
} }
} }