aboutsummaryrefslogtreecommitdiff
path: root/telegram/handlers.go
diff options
context:
space:
mode:
Diffstat (limited to 'telegram/handlers.go')
-rw-r--r--telegram/handlers.go38
1 files changed, 38 insertions, 0 deletions
diff --git a/telegram/handlers.go b/telegram/handlers.go
new file mode 100644
index 0000000..1195831
--- /dev/null
+++ b/telegram/handlers.go
@@ -0,0 +1,38 @@
+package telegram
+
+import (
+ log "github.com/sirupsen/logrus"
+ "github.com/zelenin/go-tdlib/client"
+)
+
+func uhOh() {
+ log.Fatal("Update type mismatch")
+}
+
+func (c *Client) updateHandler() {
+ listener := c.client.GetListener()
+ defer listener.Close()
+
+ for update := range listener.Updates {
+ if update.GetClass() == client.ClassUpdate {
+ switch update.GetType() {
+ case client.TypeUpdateUser:
+ typedUpdate, ok := update.(*client.UpdateUser)
+ if !ok {
+ uhOh()
+ }
+ c.updateUser(typedUpdate)
+ default:
+ // log only handled types
+ continue
+ }
+
+ log.Debugf("%#v", update)
+ }
+ }
+}
+
+func (c *Client) updateUser(update *client.UpdateUser) {
+ cache.users[update.User.Id] = update.User
+ c.processStatusUpdate(update.User.Id, &update.User.Status)
+}