✨ Implement JoinMessage and add buttons for verifying
This commit is contained in:
parent
498ddbc31e
commit
12812cbb21
1
main.go
1
main.go
@ -69,6 +69,7 @@ func InitialRoutineManager(bot *tgbotapi.BotAPI, commandManager *cli.CommandMana
|
|||||||
|
|
||||||
rm.RegisterRoutine(routines.NewCommandRoutine(commandManager))
|
rm.RegisterRoutine(routines.NewCommandRoutine(commandManager))
|
||||||
rm.RegisterRoutine(routines.NewDatabaseRoutine(service))
|
rm.RegisterRoutine(routines.NewDatabaseRoutine(service))
|
||||||
|
rm.RegisterRoutine(routines.NewJoinCheckerRoutine())
|
||||||
|
|
||||||
return rm
|
return rm
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,7 @@ package telegram
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"git.dragon-labs.de/alphyron/group_helper/logic"
|
"git.dragon-labs.de/alphyron/group_helper/logic"
|
||||||
|
"git.dragon-labs.de/alphyron/group_helper/models"
|
||||||
tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api"
|
tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api"
|
||||||
"log"
|
"log"
|
||||||
)
|
)
|
||||||
@ -19,12 +20,23 @@ func (rm RoutineManager) StartUpdates() {
|
|||||||
|
|
||||||
for update := range updates {
|
for update := range updates {
|
||||||
|
|
||||||
group, err := rm.GroupHelperService.GetGroupByID(update.Message.Chat.ID)
|
var group *models.Group
|
||||||
|
var err error
|
||||||
|
if update.Message != nil {
|
||||||
|
group, err = rm.GroupHelperService.GetGroupByID(update.Message.Chat.ID)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Println(err)
|
log.Println(err)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
} else if update.CallbackQuery != nil {
|
||||||
|
group, err = rm.GroupHelperService.GetGroupByID(update.CallbackQuery.Message.Chat.ID)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
log.Println(err)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
for _, routine := range rm.Routine {
|
for _, routine := range rm.Routine {
|
||||||
err := routine.Update(rm.Bot, &update, group)
|
err := routine.Update(rm.Bot, &update, group)
|
||||||
|
68
telegram/routines/joinchecker.go
Normal file
68
telegram/routines/joinchecker.go
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
package routines
|
||||||
|
|
||||||
|
import (
|
||||||
|
"git.dragon-labs.de/alphyron/group_helper/models"
|
||||||
|
"git.dragon-labs.de/alphyron/group_helper/telegram"
|
||||||
|
"git.dragon-labs.de/alphyron/group_helper/util"
|
||||||
|
tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api"
|
||||||
|
"log"
|
||||||
|
"math/rand"
|
||||||
|
"strconv"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
type joinCheckerRoutine struct {
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewJoinCheckerRoutine() telegram.Routine {
|
||||||
|
return joinCheckerRoutine{}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (j joinCheckerRoutine) Update(botAPI *tgbotapi.BotAPI, update *tgbotapi.Update, group *models.Group) error {
|
||||||
|
|
||||||
|
if update.Message == nil { // ignore any non-Message Updates
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
if update.Message.Chat.IsPrivate() || update.Message.Chat.IsChannel() {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
if update.Message.NewChatMembers != nil {
|
||||||
|
for _, newUser := range *update.Message.NewChatMembers {
|
||||||
|
type check struct {
|
||||||
|
Task string
|
||||||
|
Solution bool
|
||||||
|
}
|
||||||
|
|
||||||
|
length := 3
|
||||||
|
|
||||||
|
tasks := make([][]tgbotapi.InlineKeyboardButton, length)
|
||||||
|
|
||||||
|
for i := 0; i < length; i++ {
|
||||||
|
tasks[i] = tgbotapi.NewInlineKeyboardRow(tgbotapi.NewInlineKeyboardButtonData(util.GenerateCalculation(i == 0), "UserValidation: "+strconv.FormatBool(i == 0)))
|
||||||
|
}
|
||||||
|
|
||||||
|
rand.Seed(time.Now().UnixNano())
|
||||||
|
rand.Shuffle(len(tasks), func(i, j int) { tasks[i], tasks[j] = tasks[j], tasks[i] })
|
||||||
|
|
||||||
|
markup := tgbotapi.NewInlineKeyboardMarkup(tasks...)
|
||||||
|
|
||||||
|
msg := tgbotapi.NewMessage(update.Message.Chat.ID, group.UserJoinMessage)
|
||||||
|
//TODO Replace placeholder
|
||||||
|
msg.ParseMode = "Markdown"
|
||||||
|
msg.ReplyMarkup = markup
|
||||||
|
|
||||||
|
_, err := botAPI.Send(msg)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
log.Println("Problem to send verified Messages to user")
|
||||||
|
log.Println(newUser.FirstName)
|
||||||
|
log.Println(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
//TODO Add to countdown
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
19
util/calculator.go
Normal file
19
util/calculator.go
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
package util
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"math/rand"
|
||||||
|
)
|
||||||
|
|
||||||
|
func GenerateCalculation(correct bool) string {
|
||||||
|
firstNum := rand.Intn(100)
|
||||||
|
secondNum := rand.Intn(100)
|
||||||
|
|
||||||
|
solution := firstNum + secondNum
|
||||||
|
|
||||||
|
for !correct && solution == firstNum+secondNum {
|
||||||
|
solution = rand.Intn(150)
|
||||||
|
}
|
||||||
|
|
||||||
|
return fmt.Sprintf("%d + %d = %d", firstNum, secondNum, solution)
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user