From 9d21ebd44bcb3b2c04a1e072e5f92840dd05444b Mon Sep 17 00:00:00 2001 From: Vladimir Hodakov Date: Tue, 28 Nov 2017 20:37:14 +0400 Subject: [PATCH] Pass game admins to our chats. Easter egg chance generation. --- lib/router/group_request.go | 29 +++++++++------ lib/squader/squader.go | 73 ++++++++++++++++++++++++++++++------- 2 files changed, 76 insertions(+), 26 deletions(-) diff --git a/lib/router/group_request.go b/lib/router/group_request.go index a3f186b..0c4f327 100644 --- a/lib/router/group_request.go +++ b/lib/router/group_request.go @@ -6,6 +6,7 @@ package router import ( "github.com/go-telegram-bot-api/telegram-bot-api" "lab.pztrn.name/fat0troll/i2_bot/lib/dbmapping" + "math/rand" "regexp" ) @@ -14,7 +15,7 @@ func (r *Router) routeGroupRequest(update *tgbotapi.Update, playerRaw *dbmapping // Regular expressions var durakMsg = regexp.MustCompile("(Д|д)(У|у)(Р|р)(А|а|Е|е|О|о)") var huMsg = regexp.MustCompile("(Х|х)(У|у)(Й|й|Я|я|Ю|ю|Е|е)") - var blMsg = regexp.MustCompile("(\\s|^)(Б|б)(Л|л)(Я|я)(Т|т|Д|д)") + var blMsg = regexp.MustCompile("(\\s|^)(Б|б)(Л|л)((Я|я)(Т|т|Д|д)|)") var ebMsg = regexp.MustCompile("(\\s|^|ЗА|За|зА|за)(Е|е|Ё|ё)(Б|б)(\\s|Л|л|А|а|Т|т|У|у|Е|е|Ё|ё|И|и)") var piMsg = regexp.MustCompile("(П|п)(И|и)(З|з)(Д|д)") @@ -50,17 +51,21 @@ func (r *Router) routeGroupRequest(update *tgbotapi.Update, playerRaw *dbmapping return "fail" } - switch { - case huMsg.MatchString(text): - c.Talkers.MatMessage(update) - case blMsg.MatchString(text): - c.Talkers.MatMessage(update) - case ebMsg.MatchString(text): - c.Talkers.MatMessage(update) - case piMsg.MatchString(text): - c.Talkers.MatMessage(update) - case durakMsg.MatchString(text): - c.Talkers.DurakMessage(update) + // easter eggs + trigger := rand.Intn(5) + if trigger == 4 { + switch { + case huMsg.MatchString(text): + c.Talkers.MatMessage(update) + case blMsg.MatchString(text): + c.Talkers.MatMessage(update) + case ebMsg.MatchString(text): + c.Talkers.MatMessage(update) + case piMsg.MatchString(text): + c.Talkers.MatMessage(update) + case durakMsg.MatchString(text): + c.Talkers.DurakMessage(update) + } } return "ok" diff --git a/lib/squader/squader.go b/lib/squader/squader.go index b6c97aa..fc301bc 100644 --- a/lib/squader/squader.go +++ b/lib/squader/squader.go @@ -465,8 +465,17 @@ func (s *Squader) ProcessMessage(update *tgbotapi.Update, chatRaw *dbmapping.Cha } if !isChatValid { - s.kickUserFromSquadChat(&newUsers[i], chatRaw) - messageProcessed = true + switch newUsers[i].UserName { + case "gantz_yaka": + messageProcessed = true + case "@agentpb": + messageProcessed = true + case "@pbhelp": + messageProcessed = true + default: + s.kickUserFromSquadChat(&newUsers[i], chatRaw) + messageProcessed = true + } } } } @@ -514,30 +523,66 @@ func (s *Squader) ProtectBastion(update *tgbotapi.Update, newUser *tgbotapi.User playerRaw, ok := c.Users.GetOrCreatePlayer(newUser.ID) if !ok { - s.kickUserFromSquadChat(newUser, &chatRaw) - return "fail" + switch newUser.UserName { + case "gantz_yaka": + // do nothing + case "@agentpb": + // do nothing + case "@pbhelp": + // do nothing + default: + s.kickUserFromSquadChat(newUser, &chatRaw) + return "fail" + } } if playerRaw.LeagueID != 1 { - // Check for profile - _, profileOK := c.Users.GetProfile(playerRaw.ID) - if !profileOK { - message := "Привет, " + c.Users.FormatUsername(userName) + "! Напиши мне и скинь профиль для доступа в чаты Лиги!" + switch newUser.UserName { + case "gantz_yaka": + message := "Здравствуй, " + newUser.UserName + "!\n" + message += "Инстинкт рад приветствовать Бога мира ПокемемБро! Проходите, располагайтесь, чувствуйте себя, как дома.\n" - msg := tgbotapi.NewMessage(defaultChatID, message) + msg := tgbotapi.NewMessage(chatRaw.TelegramID, message) msg.ParseMode = "Markdown" c.Bot.Send(msg) - } else { - message := "Привет, " + c.Users.FormatUsername(userName) + "! Там переход между лигами не завезли случайно? Переходи в нашу Лигу, будем рады тебя видеть... а пока — вход в наши чаты закрыт!" + case "@agentpb": + message := "Здравствуй, " + newUser.UserName + "!\n" + message += "Инстинкт рад приветствовать одного из богов мира ПокемемБро! Проходите, располагайтесь, чувствуйте себя, как дома.\n" - msg := tgbotapi.NewMessage(defaultChatID, message) + msg := tgbotapi.NewMessage(chatRaw.TelegramID, message) msg.ParseMode = "Markdown" c.Bot.Send(msg) + case "@pbhelp": + message := "Здравствуй, " + newUser.UserName + "!\n" + message += "Инстинкт рад приветствовать одного из богов мира ПокемемБро! Проходите, располагайтесь, чувствуйте себя, как дома.\n" + + msg := tgbotapi.NewMessage(chatRaw.TelegramID, message) + msg.ParseMode = "Markdown" + + c.Bot.Send(msg) + default: + // Check for profile + _, profileOK := c.Users.GetProfile(playerRaw.ID) + if !profileOK { + message := "Привет, " + c.Users.FormatUsername(userName) + "! Напиши мне и скинь профиль для доступа в чаты Лиги!" + + msg := tgbotapi.NewMessage(defaultChatID, message) + msg.ParseMode = "Markdown" + + c.Bot.Send(msg) + } else { + message := "Привет, " + c.Users.FormatUsername(userName) + "! Там переход между лигами не завезли случайно? Переходи в нашу Лигу, будем рады тебя видеть... а пока — вход в наши чаты закрыт!" + + msg := tgbotapi.NewMessage(defaultChatID, message) + msg.ParseMode = "Markdown" + + c.Bot.Send(msg) + } + s.kickUserFromSquadChat(newUser, &chatRaw) + return "fail" } - s.kickUserFromSquadChat(newUser, &chatRaw) - return "fail" } return "ok"