diff --git a/telegram/connect.go b/telegram/connect.go index e19bda3..2e1af65 100644 --- a/telegram/connect.go +++ b/telegram/connect.go @@ -154,6 +154,7 @@ func (c *Client) interactor() { for { state, ok := <-c.authorizer.State if !ok { + gateway.SendMessage(c.jid, "", "Interactor is disconnected", c.xmpp) log.Error("Interactor is disconnected") return } diff --git a/telegram/utils.go b/telegram/utils.go index 3082b5f..476ae43 100644 --- a/telegram/utils.go +++ b/telegram/utils.go @@ -247,11 +247,13 @@ func (c *Client) formatMessage(chatID int64, messageID int64, preview bool, mess } var text string - switch message.Content.MessageContentType() { - case client.TypeMessageText: - messageText, _ := message.Content.(*client.MessageText) - text = messageText.Text.Text - // TODO: handle other message types with labels (not supported in Zhabogram!) + if message.Content != nil { + switch message.Content.MessageContentType() { + case client.TypeMessageText: + messageText, _ := message.Content.(*client.MessageText) + text = messageText.Text.Text + // TODO: handle other message types with labels (not supported in Zhabogram!) + } } if text != "" { if !preview { @@ -285,6 +287,11 @@ func (c *Client) formatContent(file *client.File, filename string) string { } func (c *Client) messageToText(message *client.Message) string { + if message.Content == nil { + log.Warnf("Unknown message (big emoji?): %#v", message) + return "" + } + markupFunction := formatter.EntityToMarkdown switch message.Content.MessageContentType() { case client.TypeMessageSticker: @@ -378,6 +385,10 @@ func (c *Client) messageToText(message *client.Message) string { } func (c *Client) contentToFilename(content client.MessageContent) (*client.File, string) { + if content == nil { + return nil, "" + } + switch content.MessageContentType() { case client.TypeMessageSticker: sticker, _ := content.(*client.MessageSticker)