Skip to content

Commit

Permalink
Fix homework update when message was edited
Browse files Browse the repository at this point in the history
  • Loading branch information
Bastin Anton authored and Bastin Anton committed Jan 14, 2022
1 parent b0e9e37 commit 6481f4e
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 12 deletions.
2 changes: 0 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -703,8 +703,6 @@ golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLd
golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20210520170846-37e1c6afe023/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20211007125505-59d4e928ea9d h1:QWMn1lFvU/nZ58ssWqiFJMd3DKIII8NYc4sn708XgKs=
golang.org/x/net v0.0.0-20211007125505-59d4e928ea9d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20211008194852-3b03d305991f h1:1scJEYZBaF48BaG6tYbtxmLcXqwYGSfGcMoStTqkkIw=
golang.org/x/net v0.0.0-20211008194852-3b03d305991f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/oauth2 v0.0.0-20180227000427-d7d64896b5ff/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
Expand Down
18 changes: 11 additions & 7 deletions internal/app/handler/handleontext.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,17 +25,19 @@ func (handler *Handler) handleOnText(c telebot.Context) error {
text := ""
var entities []telebot.MessageEntity

message := func(message *telebot.Message) (string, []telebot.MessageEntity) {
if message.Text != "" {
return message.Text, message.Entities
}
return message.Caption, message.CaptionEntities
}

// NOTE: multimedia messages have CaptionEntities and Caption, not Entities and Text
// Also, if the message was edited - Entities and Text are under c.Update().EditedMessage
if c.Update().EditedMessage != nil {
text = strings.ToLower(c.Update().EditedMessage.Text)
entities = c.Update().EditedMessage.Entities
} else if c.Message().Text != "" {
text = strings.ToLower(c.Message().Text)
entities = c.Message().Entities
text, entities = message(c.Update().EditedMessage)
} else {
text = strings.ToLower(c.Message().Caption)
entities = c.Message().CaptionEntities
text, entities = message(c.Update().Message)
}

// NOTE: Telegram uses UTF16 encoding for calculating Length and Offset
Expand Down Expand Up @@ -89,6 +91,7 @@ func (handler *Handler) handleOnText(c telebot.Context) error {
if c.Update().EditedMessage != nil {
handler.logger.WithFields(logrus.Fields{
"message_id": c.Update().EditedMessage.ID,
"student_id": student.ID,
}).Info("message was edited, need to delete old homework first")
if err := handler.store.Homework().DeleteByMessageIDStudentID(int64(c.Update().EditedMessage.ID), student.ID); err != nil {
if err == store.ErrRecordNotFound {
Expand All @@ -100,6 +103,7 @@ func (handler *Handler) handleOnText(c telebot.Context) error {
} else {
handler.logger.WithFields(logrus.Fields{
"message_id": c.Update().EditedMessage.ID,
"student_id": student.ID,
}).Info("old message was deleted")
}
}
Expand Down
13 changes: 10 additions & 3 deletions internal/app/handler/handlewebhook.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,13 @@ func (handler *Handler) HandleWebHook() http.HandlerFunc {
return
}

message := func(message *telebot.Message) string {
if message.Text != "" {
return message.Text
}
return message.Caption
}

if u.Callback != nil {
handler.logger.WithFields(logrus.Fields{
"update_id": u.ID,
Expand All @@ -30,7 +37,7 @@ func (handler *Handler) HandleWebHook() http.HandlerFunc {
handler.logger.WithFields(logrus.Fields{
"update_id": u.ID,
"private": u.Message.Private(),
"message": u.Message.Text,
"message": message(u.Message),
}).Info("new message received")
handler.bot.ProcessUpdate(u)
}
Expand All @@ -39,8 +46,8 @@ func (handler *Handler) HandleWebHook() http.HandlerFunc {
handler.logger.WithFields(logrus.Fields{
"update_id": u.ID,
"private": u.EditedMessage.Private(),
"message": u.EditedMessage.Text,
}).Info("edited message received")
"message": message(u.EditedMessage),
}).Info("new edited message received")
handler.bot.ProcessUpdate(u)
}

Expand Down

0 comments on commit 6481f4e

Please sign in to comment.