This commit is contained in:
cdle
2021-09-17 21:30:50 +08:00
parent 704136f02b
commit d793920ad6
5 changed files with 49 additions and 25 deletions
+20 -6
View File
@@ -11,6 +11,7 @@ import (
"github.com/Mrs4s/go-cqhttp/global"
"github.com/Mrs4s/go-cqhttp/global/config"
"github.com/cdle/sillyGirl/core"
yaml "gopkg.in/yaml.v3"
"github.com/Mrs4s/MiraiGo/binary"
"github.com/Mrs4s/MiraiGo/client"
@@ -41,6 +42,24 @@ func init() {
conf.Account.Uin = int64(qq.GetInt("uin", 0))
conf.Account.Password = qq.Get("password")
conf.Message.ReportSelfMessage = true
conf.Database = map[string]yaml.Node{
"leveldb": {
Kind: 4,
Tag: "!!map",
Content: []*yaml.Node{
{
Kind: 8,
Tag: "!!str",
Value: "enable",
},
{
Kind: 8,
Tag: "!!bool",
Value: "true",
},
},
},
}
if conf.Output.Debug {
log.SetReportCaller(true)
}
@@ -197,16 +216,11 @@ func init() {
core.Senders <- &Sender{
Message: m,
}
// cqm := coolq.ToStringMessage(m.Elements, 0, true)
// fmt.Println(cqm, m.Self, m.Target, m.Sender.Uin)
if m.Sender.Uin != c.Uin {
c.MarkPrivateMessageReaded(m.Sender.Uin, int64(m.Time))
}
}
OnGroupMessage := func(c *client.QQClient, m *message.GroupMessage) {
// cqm := coolq.ToStringMessage(m.Elements, m.GroupCode, true)
// fmt.Println(cqm, m.GroupCode, m.Sender.Uin)
OnGroupMessage := func(_ *client.QQClient, m *message.GroupMessage) {
core.Senders <- &Sender{
Message: m,
}
+26 -15
View File
@@ -14,9 +14,10 @@ import (
)
type Sender struct {
Message interface{}
matches [][]string
chat *core.Chat
Message interface{}
matches [][]string
Duration *time.Duration
deleted bool
}
func (sender *Sender) GetContent() string {
@@ -141,10 +142,6 @@ func (sender *Sender) IsMedia() bool {
func (sender *Sender) Reply(msgs ...interface{}) error {
msg := msgs[0]
if sender.chat != nil {
sender.chat.Push(msg)
return nil
}
switch sender.Message.(type) {
case *message.PrivateMessage:
m := sender.Message.(*message.PrivateMessage)
@@ -162,6 +159,7 @@ func (sender *Sender) Reply(msgs ...interface{}) error {
bot.SendPrivateMessage(m.Sender.Uin, int64(qq.GetInt("groupCode")), &message.SendingMessage{Elements: []message.IMessageElement{&message.TextElement{Content: content}}})
}
case *message.GroupMessage:
var id int32
m := sender.Message.(*message.GroupMessage)
content := ""
switch msg.(type) {
@@ -172,34 +170,47 @@ func (sender *Sender) Reply(msgs ...interface{}) error {
content = string(msg.([]byte))
case *http.Response:
data, _ := ioutil.ReadAll(msg.(*http.Response).Body)
bot.SendGroupMessage(m.GroupCode, &message.SendingMessage{Elements: []message.IMessageElement{&message.AtElement{Target: m.Sender.Uin}, &message.TextElement{Content: "\n"}, &coolq.LocalImageElement{Stream: bytes.NewReader(data)}}})
id = bot.SendGroupMessage(m.GroupCode, &message.SendingMessage{Elements: []message.IMessageElement{&message.AtElement{Target: m.Sender.Uin}, &message.TextElement{Content: "\n"}, &coolq.LocalImageElement{Stream: bytes.NewReader(data)}}})
}
if content != "" {
if strings.Contains(content, "\n") {
content = "\n" + content
}
bot.SendGroupMessage(m.GroupCode, &message.SendingMessage{Elements: []message.IMessageElement{&message.AtElement{Target: m.Sender.Uin}, &message.TextElement{Content: content}}})
id = bot.SendGroupMessage(m.GroupCode, &message.SendingMessage{Elements: []message.IMessageElement{&message.AtElement{Target: m.Sender.Uin}, &message.TextElement{Content: content}}})
}
if id > 0 && sender.Duration != nil {
go func() {
time.Sleep(*sender.Duration)
sender.Delete()
MSG := bot.GetMessage(id)
bot.Client.RecallGroupMessage(m.GroupCode, MSG["message-id"].(int32), MSG["internal-id"].(int32))
}()
}
}
return nil
}
func (sender *Sender) Delete() error {
if sender.deleted {
return nil
}
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
}
}
sender.deleted = true
return nil
}
func (sender *Sender) Disappear(lifetime ...time.Duration) {
if len(lifetime) == 0 {
sender.Duration = &core.Duration
} else {
sender.Duration = &lifetime[0]
}
}