diff --git a/core/push.go b/core/push.go index a111fce..0542ef4 100644 --- a/core/push.go +++ b/core/push.go @@ -1,9 +1,22 @@ package core var Pushs = map[string]func(int, string){} +var GroupPushs = map[string]func(int, int, string){} func Push(class string, uid int, content string) { if push, ok := Pushs[class]; ok { push(uid, content) } } + +type Chat struct { + Class string + ID int + UserID int +} + +func (ct *Chat) Push(content string) { + if push, ok := GroupPushs[ct.Class]; ok { + push(ct.ID, ct.UserID, content) + } +} diff --git a/im/qq/main.go b/im/qq/main.go index 87d6891..8792995 100644 --- a/im/qq/main.go +++ b/im/qq/main.go @@ -218,4 +218,7 @@ func init() { core.Pushs["qq"] = func(i int, s string) { bot.SendPrivateMessage(int64(i), int64(qq.GetInt("groupCode")), &message.SendingMessage{Elements: []message.IMessageElement{&message.TextElement{Content: s}}}) } + core.GroupPushs["qq"] = func(i, j int, s string) { + bot.SendGroupMessage(int64(i), &message.SendingMessage{Elements: []message.IMessageElement{&message.AtElement{Target: int64(j)}, &message.TextElement{Content: s}}}) + } } diff --git a/im/qq/sender.go b/im/qq/sender.go index 5c9f370..80a7abb 100644 --- a/im/qq/sender.go +++ b/im/qq/sender.go @@ -9,22 +9,13 @@ import ( "github.com/Mrs4s/MiraiGo/message" "github.com/Mrs4s/go-cqhttp/coolq" + "github.com/cdle/sillyGirl/core" ) type Sender struct { Message interface{} matches [][]string -} - -func (sender *Sender) RecallGroupMessage() error { - switch sender.Message.(type) { - case *message.GroupMessage: - m := sender.Message.(*message.GroupMessage) - if err := bot.Client.RecallGroupMessage(m.GroupCode, m.Id, m.InternalId); err != nil { - return err - } - } - return nil + chat *core.Chat } func (sender *Sender) GetContent() string { @@ -148,6 +139,10 @@ func (sender *Sender) IsMedia() bool { } func (sender *Sender) Reply(msg interface{}) error { + if sender.chat != nil { + sender.chat.Push(msg.(string)) + return nil + } switch sender.Message.(type) { case *message.PrivateMessage: m := sender.Message.(*message.PrivateMessage) @@ -186,3 +181,19 @@ func (sender *Sender) Reply(msg interface{}) error { } return nil } + +func (sender *Sender) RecallGroupMessage() error { + switch sender.Message.(type) { + case *message.GroupMessage: + sender.chat = &core.Chat{ + Class: sender.GetImType(), + ID: sender.GetChatID(), + UserID: sender.GetUserID(), + } + m := sender.Message.(*message.GroupMessage) + if err := bot.Client.RecallGroupMessage(m.GroupCode, m.Id, m.InternalId); err != nil { + return err + } + } + return nil +} diff --git a/im/tg/tg.go b/im/tg/tg.go index cbcea96..cd7f220 100644 --- a/im/tg/tg.go +++ b/im/tg/tg.go @@ -14,6 +14,7 @@ import ( type Sender struct { Message *tb.Message matches [][]string + chat *core.Chat } var tg = core.NewBucket("tg") @@ -43,10 +44,12 @@ func init() { core.Pushs["tg"] = func(i int, s string) { b.Send(&tb.User{ID: i}, s) } + core.GroupPushs["tg"] = func(i, j int, s string) { + b.Send(&tb.Chat{ID: int64(i)}, s) + } b.Handle(tb.OnText, Handler) logs.Info("监听telegram机器人") b.Start() - } func (sender *Sender) GetContent() string { @@ -128,6 +131,10 @@ func (sender *Sender) IsMedia() bool { } func (sender *Sender) Reply(rt interface{}) error { + if sender.chat != nil { + sender.chat.Push(rt.(string)) + return nil + } var r tb.Recipient var options = []interface{}{} if !sender.Message.FromGroup() { @@ -154,5 +161,14 @@ func (sender *Sender) Reply(rt interface{}) error { } func (sender *Sender) RecallGroupMessage() error { + cid := sender.GetChatID() + if cid == 0 { + return nil + } + sender.chat = &core.Chat{ + Class: sender.GetImType(), + ID: sender.GetChatID(), + UserID: sender.GetUserID(), + } return b.Delete(sender.Message) }