From 66a5e4e3109eb111c743332849491dc85e181d09 Mon Sep 17 00:00:00 2001 From: Maxim Lebedev Date: Fri, 22 Dec 2017 19:45:07 +0500 Subject: [PATCH] :sparkles: Added some bot helpers For this moment - checkers is message/reply/forwards from/to/about bot --- helpers_bot.go | 78 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 helpers_bot.go diff --git a/helpers_bot.go b/helpers_bot.go new file mode 100644 index 0000000..c8ae183 --- /dev/null +++ b/helpers_bot.go @@ -0,0 +1,78 @@ +package telegram + +import ( + "fmt" + "strings" +) + +func (bot *Bot) IsMessageFromMe(msg *Message) bool { + return msg.From.ID == bot.Self.ID +} + +func (bot *Bot) IsForwardFromMe(msg *Message) bool { + return msg.IsForward() && + msg.ForwardFrom.ID == bot.Self.ID +} + +func (bot *Bot) IsReplyToMe(msg *Message) bool { + if msg.Chat.IsPrivate() { + return true + } + + return msg.IsReply() && + bot.IsMessageFromMe(msg.ReplyToMessage) +} + +func (bot *Bot) IsCommandToMe(msg *Message) bool { + if msg.Chat.IsPrivate() { + return msg.IsCommand() + } + + return msg.IsCommand() && + strings.HasSuffix( + strings.ToLower(msg.Command()), + strings.ToLower(fmt.Sprint("@", bot.Self.Username)), + ) +} + +func (bot *Bot) IsMessageMentionsMe(msg *Message) bool { + if msg.Entities == nil || + len(msg.Entities) <= 0 { + return false + } + + for _, entity := range msg.Entities { + if entity.Type != EntityMention || + entity.User == nil { + continue + } + + if entity.User.ID == bot.Self.ID { + return true + } + } + + return false +} + +func (bot *Bot) IsForwardMentionsMe(msg *Message) bool { + return msg.IsForward() && + bot.IsMessageMentionsMe(msg) +} + +func (bot *Bot) IsReplyMentionsMe(msg *Message) bool { + return msg.IsReply() && + bot.IsMessageMentionsMe(msg.ReplyToMessage) +} + +func (bot *Bot) IsMessageToMe(msg *Message) bool { + switch { + case msg.Chat.IsPrivate(), + bot.IsCommandToMe(msg), + bot.IsReplyToMe(msg), + bot.IsMessageMentionsMe(msg): + return true + default: + return false + } +}