Vk bridge forwarded messages
This commit is contained in:
@@ -15,6 +15,7 @@ import (
|
|||||||
"github.com/SevereCloud/vksdk/v2/api"
|
"github.com/SevereCloud/vksdk/v2/api"
|
||||||
"github.com/SevereCloud/vksdk/v2/events"
|
"github.com/SevereCloud/vksdk/v2/events"
|
||||||
longpoll "github.com/SevereCloud/vksdk/v2/longpoll-bot"
|
longpoll "github.com/SevereCloud/vksdk/v2/longpoll-bot"
|
||||||
|
"github.com/SevereCloud/vksdk/v2/object"
|
||||||
)
|
)
|
||||||
|
|
||||||
type user struct {
|
type user struct {
|
||||||
@@ -40,7 +41,9 @@ func (b *Bvk) Connect() error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
lp.MessageNew(b.handleMessage)
|
lp.MessageNew(func(ctx context.Context, obj events.MessageNewObject) {
|
||||||
|
b.handleMessage(obj.Message, false)
|
||||||
|
})
|
||||||
|
|
||||||
go lp.Run()
|
go lp.Run()
|
||||||
|
|
||||||
@@ -148,8 +151,7 @@ func (b *Bvk) getUser(id int) user {
|
|||||||
return u
|
return u
|
||||||
}
|
}
|
||||||
|
|
||||||
func (b *Bvk) handleMessage(ctx context.Context, obj events.MessageNewObject) {
|
func (b *Bvk) handleMessage(msg object.MessagesMessage, isFwd bool) {
|
||||||
msg := obj.Message
|
|
||||||
b.Log.Debug("ChatID: ", msg.PeerID)
|
b.Log.Debug("ChatID: ", msg.PeerID)
|
||||||
u := b.getUser(msg.FromID)
|
u := b.getUser(msg.FromID)
|
||||||
|
|
||||||
@@ -169,6 +171,10 @@ func (b *Bvk) handleMessage(ctx context.Context, obj events.MessageNewObject) {
|
|||||||
rmsg.Text = "Re: " + ur.firstname + " " + ur.lastname + "\n" + rmsg.Text
|
rmsg.Text = "Re: " + ur.firstname + " " + ur.lastname + "\n" + rmsg.Text
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if isFwd {
|
||||||
|
rmsg.Username = "Fwd: " + rmsg.Username
|
||||||
|
}
|
||||||
|
|
||||||
if len(msg.Attachments) > 0 {
|
if len(msg.Attachments) > 0 {
|
||||||
var urls []string
|
var urls []string
|
||||||
|
|
||||||
@@ -188,7 +194,6 @@ func (b *Bvk) handleMessage(ctx context.Context, obj events.MessageNewObject) {
|
|||||||
} else if a.Type == "doc" {
|
} else if a.Type == "doc" {
|
||||||
urls = append(urls, a.Doc.URL)
|
urls = append(urls, a.Doc.URL)
|
||||||
} else if a.Type == "graffiti" {
|
} else if a.Type == "graffiti" {
|
||||||
// Untested
|
|
||||||
urls = append(urls, a.Graffiti.URL)
|
urls = append(urls, a.Graffiti.URL)
|
||||||
} else if a.Type == "audio_message" {
|
} else if a.Type == "audio_message" {
|
||||||
urls = append(urls, a.AudioMessage.DocsDocPreviewAudioMessage.LinkOgg)
|
urls = append(urls, a.AudioMessage.DocsDocPreviewAudioMessage.LinkOgg)
|
||||||
@@ -228,5 +233,16 @@ func (b *Bvk) handleMessage(ctx context.Context, obj events.MessageNewObject) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if len(msg.FwdMessages) > 0 {
|
||||||
|
rmsg.Text += strconv.Itoa(len(msg.FwdMessages)) + " forwarded messages"
|
||||||
|
}
|
||||||
|
|
||||||
b.Remote <- rmsg
|
b.Remote <- rmsg
|
||||||
|
|
||||||
|
if len(msg.FwdMessages) > 0 {
|
||||||
|
for _, m := range msg.FwdMessages {
|
||||||
|
m.PeerID = msg.PeerID
|
||||||
|
b.handleMessage(m, true)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user