7a04f298d2
- update to latest telegram layer - remove some references to fields in tg.Entities that don't exist in the schema - originally added here: https://github.com/beeper/td/commit/820929062a2ba0104397bc01235ab58a9cff780e - referenced here - https://github.com/mautrix/telegramgo/commit/124f0967ed195b5a380c9bd02e170ada9710dde3 - https://github.com/mautrix/telegramgo/commit/4205047aab2e0639217148b5d125bfaab668bd8e
97 lines
2.0 KiB
Go
97 lines
2.0 KiB
Go
package e2e
|
|
|
|
import (
|
|
"go.mau.fi/mautrix-telegram/pkg/gotd/tg"
|
|
)
|
|
|
|
// EventBuilder struct.
|
|
type EventBuilder struct {
|
|
updates []tg.UpdateClass
|
|
ents *Entities
|
|
s *server
|
|
date int
|
|
}
|
|
|
|
// SendMessage send a new message.
|
|
func (e *EventBuilder) SendMessage(from *tg.PeerUser, peer tg.PeerClass, text string) {
|
|
msg := &tg.Message{
|
|
Message: text,
|
|
PeerID: peer,
|
|
FromID: from,
|
|
Date: e.date,
|
|
}
|
|
|
|
fromUser, ok := e.s.peers.users[from.UserID]
|
|
if !ok {
|
|
panic("bad fromID")
|
|
}
|
|
e.ents.Users[from.UserID] = fromUser
|
|
|
|
switch peer := peer.(type) {
|
|
case *tg.PeerUser:
|
|
user, ok := e.s.peers.users[peer.UserID]
|
|
if !ok {
|
|
panic("peer not found")
|
|
}
|
|
|
|
e.ents.Users[user.ID] = user
|
|
e.s.messages.common = append(e.s.messages.common, msg)
|
|
e.updates = append(e.updates, &tg.UpdateNewMessage{
|
|
Message: msg,
|
|
Pts: len(e.s.messages.common),
|
|
PtsCount: 1,
|
|
})
|
|
case *tg.PeerChat:
|
|
chat, ok := e.s.peers.chats[peer.ChatID]
|
|
if !ok {
|
|
panic("peer not found")
|
|
}
|
|
|
|
e.ents.Chats[chat.ID] = chat
|
|
e.s.messages.common = append(e.s.messages.common, msg)
|
|
e.updates = append(e.updates, &tg.UpdateNewMessage{
|
|
Message: msg,
|
|
Pts: len(e.s.messages.common),
|
|
PtsCount: 1,
|
|
})
|
|
case *tg.PeerChannel:
|
|
channel, ok := e.s.peers.channels[peer.ChannelID]
|
|
if !ok {
|
|
panic("peer not found")
|
|
}
|
|
|
|
e.ents.Channels[channel.ID] = channel
|
|
msgs := append(e.s.messages.channels[peer.ChannelID], msg)
|
|
e.s.messages.channels[peer.ChannelID] = msgs
|
|
e.updates = append(e.updates, &tg.UpdateNewChannelMessage{
|
|
Message: msg,
|
|
Pts: len(msgs),
|
|
PtsCount: 1,
|
|
})
|
|
default:
|
|
panic("unexpected peer type")
|
|
}
|
|
}
|
|
|
|
// CreateEvent creates new event.
|
|
func (s *server) CreateEvent(f func(ev *EventBuilder)) *tg.Updates {
|
|
s.mux.Lock()
|
|
defer s.mux.Unlock()
|
|
|
|
s.date++
|
|
ev := &EventBuilder{
|
|
ents: NewEntities(),
|
|
s: s,
|
|
date: s.date,
|
|
}
|
|
f(ev)
|
|
|
|
return &tg.Updates{
|
|
Updates: ev.updates,
|
|
Users: ev.ents.AsUsers(),
|
|
Chats: ev.ents.AsChats(),
|
|
Date: s.date,
|
|
Seq: 0,
|
|
}
|
|
}
|