move gotd fork into repo. (#111)

- 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
This commit is contained in:
Adam Van Ymeren
2025-06-27 20:03:37 -07:00
committed by GitHub
parent 0952df0244
commit 7a04f298d2
19264 changed files with 1539697 additions and 84 deletions
+47
View File
@@ -0,0 +1,47 @@
package telegram
import (
"fmt"
"github.com/go-faster/errors"
"go.uber.org/zap"
"go.mau.fi/mautrix-telegram/pkg/gotd/bin"
"go.mau.fi/mautrix-telegram/pkg/gotd/tg"
)
func (c *Client) updateInterceptor(updates ...tg.UpdateClass) {
for _, update := range updates {
switch update.(type) {
case *tg.UpdateConfig, *tg.UpdateDCOptions:
c.fetchConfig(c.ctx)
}
}
}
func (c *Client) processUpdates(updates tg.UpdatesClass) error {
switch u := updates.(type) {
case *tg.Updates:
c.updateInterceptor(u.Updates...)
return c.updateHandler.Handle(c.ctx, u)
case *tg.UpdatesCombined:
c.updateInterceptor(u.Updates...)
return c.updateHandler.Handle(c.ctx, u)
case *tg.UpdateShort:
c.updateInterceptor(u.Update)
return c.updateHandler.Handle(c.ctx, u)
case *tg.UpdateShortMessage, *tg.UpdateShortChatMessage, *tg.UpdateShortSentMessage, *tg.UpdatesTooLong:
return c.updateHandler.Handle(c.ctx, u)
default:
c.log.Warn("Ignoring update", zap.String("update_type", fmt.Sprintf("%T", u)))
}
return nil
}
func (c *Client) handleUpdates(b *bin.Buffer) error {
updates, err := tg.DecodeUpdates(b)
if err != nil {
return errors.Wrap(err, "decode updates")
}
return c.processUpdates(updates)
}