From b7379013a8c867af989c74b38df71734b9f1426d Mon Sep 17 00:00:00 2001 From: Vladimir Hodakov Date: Tue, 23 Jan 2018 20:50:21 +0400 Subject: [PATCH] Explicit error message for profile posting with enabled artifacts --- lib/config/config.go | 2 +- lib/forwarder/forwarder.go | 5 ++++- lib/talkers/help.go | 5 +++-- lib/users/responders.go | 13 +++++++++++++ lib/users/usersinterface/usersinterface.go | 1 + 5 files changed, 22 insertions(+), 4 deletions(-) diff --git a/lib/config/config.go b/lib/config/config.go index 075b267..18b5441 100644 --- a/lib/config/config.go +++ b/lib/config/config.go @@ -11,7 +11,7 @@ import ( ) // VERSION is the current bot's version -const VERSION = "0.6.5" +const VERSION = "0.6.6" // DatabaseConnection handles database connection settings in config.yaml type DatabaseConnection struct { diff --git a/lib/forwarder/forwarder.go b/lib/forwarder/forwarder.go index 49c8dc4..2b5dd99 100644 --- a/lib/forwarder/forwarder.go +++ b/lib/forwarder/forwarder.go @@ -4,8 +4,8 @@ package forwarder import ( - "github.com/go-telegram-bot-api/telegram-bot-api" "git.wtfteam.pro/fat0troll/i2_bot/lib/dbmapping" + "github.com/go-telegram-bot-api/telegram-bot-api" "regexp" ) @@ -15,6 +15,7 @@ func (f *Forwarder) ProcessForward(update *tgbotapi.Update, playerRaw *dbmapping // Forwards var pokememeMsg = regexp.MustCompile("(Уровень)(.+)(Опыт)(.+)\n(Элементы:)(.+)\n(.+)(💙MP)") var profileMsg = regexp.MustCompile(`(Онлайн: )(\d+)\n(Турнир через)(.+)\n\n((.*)\n|(.*)\n(.*)\n)(Элементы)(.+)\n(.*)\n\n(.+)(Уровень)(.+)\n`) + var profileWithEffectsMsg = regexp.MustCompile(`(Онлайн: )(\d+)\n(Турнир через)(.+)\n\n((.*)\n|(.*)\n(.*)\n)(Элементы)(.+)\n(.*)\n(Эффекты)(.*)\n\n(.+)(Уровень)(.+)\n`) switch { case pokememeMsg.MatchString(text): @@ -27,6 +28,8 @@ func (f *Forwarder) ProcessForward(update *tgbotapi.Update, playerRaw *dbmapping case profileMsg.MatchString(text): c.Log.Debug("Profile posted!") return c.Users.ParseProfile(update, playerRaw) + case profileWithEffectsMsg.MatchString(text): + return c.Users.ProfileAddEffectsMessage(update) default: c.Log.Debug(text) } diff --git a/lib/talkers/help.go b/lib/talkers/help.go index dab90f4..b2033bf 100644 --- a/lib/talkers/help.go +++ b/lib/talkers/help.go @@ -4,9 +4,9 @@ package talkers import ( - "github.com/go-telegram-bot-api/telegram-bot-api" "git.wtfteam.pro/fat0troll/i2_bot/lib/config" "git.wtfteam.pro/fat0troll/i2_bot/lib/dbmapping" + "github.com/go-telegram-bot-api/telegram-bot-api" ) // AcademyMessage gives user link to Bastion @@ -49,7 +49,7 @@ func (t *Talkers) BastionMessage(update *tgbotapi.Update, playerRaw *dbmapping.P // HelpMessage gives user all available commands func (t *Talkers) HelpMessage(update *tgbotapi.Update, playerRaw *dbmapping.Player) { - message := "*Бот Инстинкта Enchanched.*\n\n" + message := "*Бот Инстинкта Enhanced.*\n\n" message += "Текущая версия: *" + config.VERSION + "*\n\n" message += "Список команд\n\n" message += "\\* /me – посмотреть свой сохраненный профиль в боте\n" @@ -69,6 +69,7 @@ func (t *Talkers) HelpMessage(update *tgbotapi.Update, playerRaw *dbmapping.Play } if c.Users.PlayerBetterThan(playerRaw, "academic") { message += "\\* /users — просмотреть зарегистрированных пользователей бота\n" + message += "\\* /find\\_level _цифра_ — показать всех игроков соответствующего уровня. Учитываются профили за 72 часа\n" message += "\\* /find\\_user _строка_ — найти игрока в боте по его нику или имени. Ник ищется без собачки в начале\n" } message += "\\* /help – выводит данное сообщение\n" diff --git a/lib/users/responders.go b/lib/users/responders.go index 87dbf1f..02c0c75 100644 --- a/lib/users/responders.go +++ b/lib/users/responders.go @@ -79,6 +79,19 @@ func (u *Users) ForeignProfileMessage(update *tgbotapi.Update) string { return u.ProfileMessage(update, &playerRaw) } +// ProfileAddEffectsMesage shows when user tries to post profile with effects enabled +func (u *Users) ProfileAddEffectsMessage(update *tgbotapi.Update) string { + message := "*Наркоман, штоле?*\n\n" + message += "Бот не принимает профили во время активированных эффектов. Закончи свои дела и принеси чистый профиль через полчаса." + + msg := tgbotapi.NewMessage(update.Message.Chat.ID, message) + msg.ParseMode = "Markdown" + + c.Bot.Send(msg) + + return "fail" +} + // ProfileMessage shows current player's profile func (u *Users) ProfileMessage(update *tgbotapi.Update, playerRaw *dbmapping.Player) string { profileRaw, ok := u.GetProfile(playerRaw.ID) diff --git a/lib/users/usersinterface/usersinterface.go b/lib/users/usersinterface/usersinterface.go index 1d6a1b5..b705ce1 100644 --- a/lib/users/usersinterface/usersinterface.go +++ b/lib/users/usersinterface/usersinterface.go @@ -24,6 +24,7 @@ type UsersInterface interface { FindByName(update *tgbotapi.Update) string ForeignProfileMessage(update *tgbotapi.Update) string FormatUsername(userName string) string + ProfileAddEffectsMessage(update *tgbotapi.Update) string ProfileMessage(update *tgbotapi.Update, playerRaw *dbmapping.Player) string UsersList(update *tgbotapi.Update) string }