From c702115fe61cf55f4cb0105c1fc043b5b8cb0119 Mon Sep 17 00:00:00 2001 From: Alphyron Date: Sat, 16 May 2020 22:06:58 +0200 Subject: [PATCH] :sparkles: Implement Verifier and checker for right answer --- main.go | 1 + telegram/routines/verifier.go | 65 +++++++++++++++++++++++++++++++++++ 2 files changed, 66 insertions(+) create mode 100644 telegram/routines/verifier.go diff --git a/main.go b/main.go index 3ccc5eb..88fa501 100644 --- a/main.go +++ b/main.go @@ -70,6 +70,7 @@ func InitialRoutineManager(bot *tgbotapi.BotAPI, commandManager *cli.CommandMana rm.RegisterRoutine(routines.NewCommandRoutine(commandManager)) rm.RegisterRoutine(routines.NewDatabaseRoutine(service)) rm.RegisterRoutine(routines.NewJoinCheckerRoutine()) + rm.RegisterRoutine(routines.NewVerifierRoutine(service)) return rm } diff --git a/telegram/routines/verifier.go b/telegram/routines/verifier.go new file mode 100644 index 0000000..e80b53f --- /dev/null +++ b/telegram/routines/verifier.go @@ -0,0 +1,65 @@ +package routines + +import ( + "git.dragon-labs.de/alphyron/group_helper/logic" + "git.dragon-labs.de/alphyron/group_helper/models" + "git.dragon-labs.de/alphyron/group_helper/telegram" + tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api" + "strconv" + "strings" +) + +type verifierRoutine struct { + groupHelperService logic.GroupHelperService +} + +func NewVerifierRoutine(groupHelperService logic.GroupHelperService) telegram.Routine { + return verifierRoutine{ + groupHelperService: groupHelperService, + } +} + +func (v verifierRoutine) Update(botAPI *tgbotapi.BotAPI, update *tgbotapi.Update, group *models.Group) error { + if update.CallbackQuery == nil { + return nil + } + + if !strings.HasPrefix(update.CallbackQuery.Data, "UserValidation:") { + return nil + } + + success, err := strconv.ParseBool(strings.TrimPrefix(update.CallbackQuery.Data, "UserValidation: ")) + + if err != nil { + return err + } + + if success { + + //TODO check if the user is realy in countdown handler + /*if isInGroup { + _, err = botAPI.AnswerCallbackQuery(tgbotapi.NewCallback(update.CallbackQuery.ID, "You are already verified!")) + return err + }*/ + + // Delete after accept the Message + botAPI.DeleteMessage(tgbotapi.DeleteMessageConfig{ + ChatID: update.CallbackQuery.Message.Chat.ID, + MessageID: update.CallbackQuery.Message.MessageID, + }) + botAPI.AnswerCallbackQuery(tgbotapi.NewCallback(update.CallbackQuery.ID, "You are now verified. Welcome to the chat!")) + + verifyMessage := group.UserVerifiedMessage + //TODO Replace placeholder + + msg := tgbotapi.NewMessage(update.CallbackQuery.Message.Chat.ID, verifyMessage) + msg.ParseMode = "Markdown" + _, err := botAPI.Send(msg) + + //TODO Remove the user from the validator so dont get banned + return err + } else { + _, err = botAPI.AnswerCallbackQuery(tgbotapi.NewCallback(update.CallbackQuery.ID, "Wrong answer")) + return err + } +}