Archived
1

Some easter eggs. Ability to find user by name or nickname.

This commit is contained in:
2017-12-02 13:45:24 +04:00
parent 703ea27cdb
commit 8a11a356a3
8 changed files with 88 additions and 4 deletions

View File

@@ -15,6 +15,43 @@ func (u *Users) FormatUsername(userName string) string {
return strings.Replace(userName, "_", "\\_", -1)
}
// FindByName finds user with such username or nickname
func (u *Users) FindByName(update *tgbotapi.Update) string {
commandArgs := update.Message.CommandArguments()
if commandArgs == "" {
c.Talkers.BotError(update)
return "fail"
}
usersArray, ok := u.findUserByName(commandArgs)
if !ok {
return "fail"
}
message := "*Найденные игроки:*\n"
for i := range usersArray {
message += "#" + strconv.Itoa(usersArray[i].Player.ID)
message += " " + usersArray[i].League.Symbol
message += " " + usersArray[i].Profile.Nickname
if usersArray[i].Profile.TelegramNickname != "" {
message += " (@" + u.FormatUsername(usersArray[i].Profile.TelegramNickname) + ")"
}
message += " /profile" + strconv.Itoa(usersArray[i].Player.ID) + "\n"
message += "Telegram ID: " + strconv.Itoa(usersArray[i].Player.TelegramID) + "\n"
message += "Последнее обновление: " + usersArray[i].Profile.CreatedAt.Format("02.01.2006 15:04:05") + "\n"
}
c.Log.Debug(message)
msg := tgbotapi.NewMessage(update.Message.Chat.ID, message)
msg.ParseMode = "Markdown"
c.Bot.Send(msg)
return "ok"
}
// ForeignProfileMessage shows profile of another user
func (u *Users) ForeignProfileMessage(update *tgbotapi.Update) string {
userNum := strings.TrimPrefix(update.Message.Command(), "profile")

View File

@@ -7,6 +7,7 @@ import (
"github.com/go-telegram-bot-api/telegram-bot-api"
"lab.pztrn.name/fat0troll/i2_bot/lib/dbmapping"
"strconv"
"strings"
)
// Internal functions for Users package
@@ -47,6 +48,26 @@ func (u *Users) getUsersWithProfiles() ([]dbmapping.PlayerProfile, bool) {
return usersArray, true
}
func (u *Users) findUserByName(pattern string) ([]dbmapping.PlayerProfile, bool) {
allUsers, ok := u.getUsersWithProfiles()
if !ok {
return allUsers, ok
}
selectedUsers := []dbmapping.PlayerProfile{}
for i := range allUsers {
user := allUsers[i]
if user.HaveProfile {
if strings.Contains(user.Profile.TelegramNickname, pattern) || strings.Contains(user.Profile.Nickname, pattern) {
selectedUsers = append(selectedUsers, user)
}
}
}
return selectedUsers, true
}
func (u *Users) profileAddSuccessMessage(update *tgbotapi.Update, leagueID int, level int) {
message := "*Профиль успешно обновлен.*\n\n"
message += "Функциональность бота держится на актуальности профилей. Обновляйся почаще, и да пребудет с тобой Рандом!\n"
@@ -54,9 +75,10 @@ func (u *Users) profileAddSuccessMessage(update *tgbotapi.Update, leagueID int,
message += "/best посмотреть лучших покемемов для поимки"
if leagueID == 1 {
message += "\nЗаходи в Бастион Инстинкта: https://t.me/joinchat/G2vME0mIX-QHjjxE\\_JBzoQ\n"
if level < 5 {
message += "\nАкадемия Инстинкта: все вопросы по игре, обучение и помощь новичку: https://t.me/joinchat/G2vME04jk02v2etRmumylg\n"
if level < 4 {
message += "\nЗаходи в Академию Инстинкта: все вопросы по игре, обучение и помощь новичку: https://t.me/joinchat/G2vME04jk02v2etRmumylg\n"
} else {
message += "\nЗаходи в Бастион Инстинкта: https://t.me/joinchat/G2vME0mIX-QHjjxE\\_JBzoQ\n"
}
}

View File

@@ -19,6 +19,7 @@ type UsersInterface interface {
GetPlayerByID(playerID int) (dbmapping.Player, bool)
PlayerBetterThan(playerRaw *dbmapping.Player, powerLevel string) bool
FindByName(update *tgbotapi.Update) string
ForeignProfileMessage(update *tgbotapi.Update) string
FormatUsername(userName string) string
ProfileMessage(update *tgbotapi.Update, playerRaw *dbmapping.Player) string