get request messages and format them to our likeing, wip, some TODOS left
authorEduardo <[email protected]>
Thu, 28 Mar 2024 02:36:16 +0000 (03:36 +0100)
committerEduardo <[email protected]>
Thu, 28 Mar 2024 02:36:16 +0000 (03:36 +0100)
bot.go

diff --git a/bot.go b/bot.go
index d4b42925634fb2ffb3399c15dd544b55d8222ec8..88e50c3e788fecc3ba2ec322e88b946cb2a8d43a 100644 (file)
--- a/bot.go
+++ b/bot.go
@@ -29,8 +29,10 @@ var (
 
        telegram *tgbotapi.BotAPI
 
-       // bot msg
+       // bot msg, the one it edits
        botMsg *tgbotapi.Message
+       // last message received
+       lastMsg *tgbotapi.Message
 
        // bot text message
        botText string = InitBotText
@@ -129,9 +131,15 @@ func handleUpdate(update tgbotapi.Update) {
 }
 
 func handleMessage(message *tgbotapi.Message) {
+       lastMsg = message
+
        user := message.From
        text := message.Text
 
+       if text == "" {
+               text = message.Caption
+       }
+
        if user == nil {
                return
        }
@@ -173,11 +181,20 @@ func handleConversation(chatId int64, text string) error {
        var err error
        text = strings.ToLower(text)
 
-       switch text {
-       case "hola",
-               "hola sylph":
+       var regexIssue = regexp.MustCompile(`(?i)\bIssue\b`)
+       var regexRequest = regexp.MustCompile(`(?i)\bRequest\b`)
+
+       switch {
+       case text == "hola",
+               text == "hola sylph":
                err = sendTelegramMessage(chatId, "Hola!")
 
+       case regexIssue.MatchString(text):
+               err = manageIssueMessage(chatId, text)
+
+       case regexRequest.MatchString(text):
+               err = manageSerieRequest(chatId, text)
+
        default:
                err = sendTelegramMessage(chatId, "Jej. No entiendi. ðŸ¤£")
        }
@@ -185,6 +202,50 @@ func handleConversation(chatId int64, text string) error {
        return err
 }
 
+func manageIssueMessage(chatId int64, text string) error {
+       var err error
+
+       // issue can be: comment, resolved, reported
+       // issues can be type: video, audio, subtitle
+
+       //TODO: manage issues
+
+       return err
+}
+
+func manageSerieRequest(chatId int64, text string) error {
+       var err error
+       var response string = ""
+
+       // request can be: new, available
+       // request can be type: series, movie
+       var regexNew = regexp.MustCompile(`(?i)\bNew\b`)
+       var regexAvailable = regexp.MustCompile(`(?i)\bAvailable\b`)
+       var regexSeries = regexp.MustCompile(`(?i)\bSeries\b`)
+       var regexMovie = regexp.MustCompile(`(?i)\bMovie\b`)
+
+       switch {
+       case regexSeries.MatchString(text):
+               // get from text whatever is after the first - and the end of the line
+               response = "📺 <b>" + getFirstLine(getTextAfterDash(text)) + "</b>\n"
+
+       case regexMovie.MatchString(text):
+               response = "🎥 <b>" + getFirstLine(getTextAfterDash(text)) + "</b>\n"
+       }
+
+       switch {
+       case regexAvailable.MatchString(text):
+               response += "pedida por <b>" + getRequestedBy(text) + "</b>\n\n🎉 Ya disponible!"
+
+       case regexNew.MatchString(text):
+               response += "pedida para añadir por <b>" + getRequestedBy(text) + "</b>\n\n(en cola)"
+       }
+
+       // TODO: remove sent message to replace with ours?
+       err = sendTelegramPhoto(chatId, lastMsg.Photo[0].FileID, response)
+       return err
+}
+
 func sendMenu(chatId int64) error {
        msg := tgbotapi.NewMessage(chatId, botText)
        msg.ParseMode = tgbotapi.ModeHTML