Academic access level, can see other profiles
This commit is contained in:
parent
da8fe3f3e8
commit
703ea27cdb
@ -16,6 +16,7 @@ func (r *Router) routePrivateRequest(update *tgbotapi.Update, playerRaw *dbmappi
|
|||||||
var pokedexMsg = regexp.MustCompile("/pokede(x|ks)\\d?\\z")
|
var pokedexMsg = regexp.MustCompile("/pokede(x|ks)\\d?\\z")
|
||||||
var pokememeInfoMsg = regexp.MustCompile("/pk(\\d+)")
|
var pokememeInfoMsg = regexp.MustCompile("/pk(\\d+)")
|
||||||
var usersMsg = regexp.MustCompile("/users(\\d+|)\\z")
|
var usersMsg = regexp.MustCompile("/users(\\d+|)\\z")
|
||||||
|
var profileMsg = regexp.MustCompile("/profile(\\d+)\\z")
|
||||||
var squadInfoMsg = regexp.MustCompile("/show_squad(\\d+)\\z")
|
var squadInfoMsg = regexp.MustCompile("/show_squad(\\d+)\\z")
|
||||||
var orderSendMsg = regexp.MustCompile("/send_order(\\d+)\\z")
|
var orderSendMsg = regexp.MustCompile("/send_order(\\d+)\\z")
|
||||||
|
|
||||||
@ -128,11 +129,18 @@ func (r *Router) routePrivateRequest(update *tgbotapi.Update, playerRaw *dbmappi
|
|||||||
return c.Talkers.AnyMessageUnauthorized(update)
|
return c.Talkers.AnyMessageUnauthorized(update)
|
||||||
|
|
||||||
case usersMsg.MatchString(text):
|
case usersMsg.MatchString(text):
|
||||||
if c.Users.PlayerBetterThan(playerRaw, "admin") {
|
if c.Users.PlayerBetterThan(playerRaw, "academic") {
|
||||||
return c.Users.UsersList(update)
|
return c.Users.UsersList(update)
|
||||||
}
|
}
|
||||||
|
|
||||||
return c.Talkers.AnyMessageUnauthorized(update)
|
return c.Talkers.AnyMessageUnauthorized(update)
|
||||||
|
|
||||||
|
case profileMsg.MatchString(text):
|
||||||
|
if c.Users.PlayerBetterThan(playerRaw, "academic") {
|
||||||
|
return c.Users.ForeignProfileMessage(update)
|
||||||
|
}
|
||||||
|
|
||||||
|
return c.Talkers.AnyMessageUnauthorized(update)
|
||||||
|
|
||||||
case update.Message.Command() == "squad_add_user":
|
case update.Message.Command() == "squad_add_user":
|
||||||
return c.Squader.AddUserToSquad(update, playerRaw)
|
return c.Squader.AddUserToSquad(update, playerRaw)
|
||||||
|
@ -25,6 +25,8 @@ func (t *Talkers) HelpMessage(update *tgbotapi.Update, playerRaw *dbmapping.Play
|
|||||||
message += "+ /pin _номера чатов_ _текст_ — отправить сообщение в чаты с номерами. Сообщение будет автоматичекси запинено. Пример: \"/pin 2,3,5 привет мир\". Внимание: между номерами чатов ставятся запятые без пробелов! Всё, что идёт после второго пробела в команде — сообщение\n"
|
message += "+ /pin _номера чатов_ _текст_ — отправить сообщение в чаты с номерами. Сообщение будет автоматичекси запинено. Пример: \"/pin 2,3,5 привет мир\". Внимание: между номерами чатов ставятся запятые без пробелов! Всё, что идёт после второго пробела в команде — сообщение\n"
|
||||||
message += "+ /pin\\_all _текст_ — отправить сообщение во все группы, где находится бот. Сообщение будет автоматически запинено.\n"
|
message += "+ /pin\\_all _текст_ — отправить сообщение во все группы, где находится бот. Сообщение будет автоматически запинено.\n"
|
||||||
message += "+ /orders — просмотреть приказы на атаку\n"
|
message += "+ /orders — просмотреть приказы на атаку\n"
|
||||||
|
}
|
||||||
|
if c.Users.PlayerBetterThan(playerRaw, "academic") {
|
||||||
message += "+ /users — просмотреть зарегистрированных пользователей бота\n"
|
message += "+ /users — просмотреть зарегистрированных пользователей бота\n"
|
||||||
}
|
}
|
||||||
message += "+ /help – выводит данное сообщение\n"
|
message += "+ /help – выводит данное сообщение\n"
|
||||||
|
@ -72,6 +72,10 @@ func (u *Users) PlayerBetterThan(playerRaw *dbmapping.Player, powerLevel string)
|
|||||||
if powerLevel != "owner" {
|
if powerLevel != "owner" {
|
||||||
isBetter = true
|
isBetter = true
|
||||||
}
|
}
|
||||||
|
case "academic":
|
||||||
|
if powerLevel != "ownder" && powerLevel != "admin" {
|
||||||
|
isBetter = true
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
isBetter = false
|
isBetter = false
|
||||||
}
|
}
|
||||||
|
@ -15,6 +15,28 @@ func (u *Users) FormatUsername(userName string) string {
|
|||||||
return strings.Replace(userName, "_", "\\_", -1)
|
return strings.Replace(userName, "_", "\\_", -1)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ForeignProfileMessage shows profile of another user
|
||||||
|
func (u *Users) ForeignProfileMessage(update *tgbotapi.Update) string {
|
||||||
|
userNum := strings.TrimPrefix(update.Message.Command(), "profile")
|
||||||
|
userID, err := strconv.Atoi(userNum)
|
||||||
|
if err != nil {
|
||||||
|
c.Log.Error(err.Error())
|
||||||
|
return "fail"
|
||||||
|
}
|
||||||
|
|
||||||
|
playerRaw, ok := u.GetPlayerByID(userID)
|
||||||
|
if !ok {
|
||||||
|
return "fail"
|
||||||
|
}
|
||||||
|
|
||||||
|
_, ok = u.GetProfile(playerRaw.ID)
|
||||||
|
if !ok {
|
||||||
|
return c.Talkers.BotError(update)
|
||||||
|
}
|
||||||
|
|
||||||
|
return u.ProfileMessage(update, &playerRaw)
|
||||||
|
}
|
||||||
|
|
||||||
// ProfileMessage shows current player's profile
|
// ProfileMessage shows current player's profile
|
||||||
func (u *Users) ProfileMessage(update *tgbotapi.Update, playerRaw *dbmapping.Player) string {
|
func (u *Users) ProfileMessage(update *tgbotapi.Update, playerRaw *dbmapping.Player) string {
|
||||||
profileRaw, ok := u.GetProfile(playerRaw.ID)
|
profileRaw, ok := u.GetProfile(playerRaw.ID)
|
||||||
@ -94,6 +116,8 @@ func (u *Users) ProfileMessage(update *tgbotapi.Update, playerRaw *dbmapping.Pla
|
|||||||
message += "\n\nСтатус в боте: _владелец_"
|
message += "\n\nСтатус в боте: _владелец_"
|
||||||
} else if playerRaw.Status == "admin" {
|
} else if playerRaw.Status == "admin" {
|
||||||
message += "\n\nСтатус в боте: _администратор_"
|
message += "\n\nСтатус в боте: _администратор_"
|
||||||
|
} else if playerRaw.Status == "academic" {
|
||||||
|
message += "\n\nСтатус в боте: _академик_"
|
||||||
} else {
|
} else {
|
||||||
message += "\n\nСтатус в боте: _игрок_"
|
message += "\n\nСтатус в боте: _игрок_"
|
||||||
}
|
}
|
||||||
|
@ -98,7 +98,7 @@ func (u *Users) usersList(update *tgbotapi.Update, page int, usersArray []dbmapp
|
|||||||
if usersArray[i].Profile.TelegramNickname != "" {
|
if usersArray[i].Profile.TelegramNickname != "" {
|
||||||
message += " (@" + u.FormatUsername(usersArray[i].Profile.TelegramNickname) + ")"
|
message += " (@" + u.FormatUsername(usersArray[i].Profile.TelegramNickname) + ")"
|
||||||
}
|
}
|
||||||
message += "\n"
|
message += " /profile" + strconv.Itoa(usersArray[i].Player.ID) + "\n"
|
||||||
message += "Telegram ID: " + strconv.Itoa(usersArray[i].Player.TelegramID) + "\n"
|
message += "Telegram ID: " + strconv.Itoa(usersArray[i].Player.TelegramID) + "\n"
|
||||||
message += "Последнее обновление: " + usersArray[i].Profile.CreatedAt.Format("02.01.2006 15:04:05") + "\n"
|
message += "Последнее обновление: " + usersArray[i].Profile.CreatedAt.Format("02.01.2006 15:04:05") + "\n"
|
||||||
} else {
|
} else {
|
||||||
|
@ -19,6 +19,7 @@ type UsersInterface interface {
|
|||||||
GetPlayerByID(playerID int) (dbmapping.Player, bool)
|
GetPlayerByID(playerID int) (dbmapping.Player, bool)
|
||||||
PlayerBetterThan(playerRaw *dbmapping.Player, powerLevel string) bool
|
PlayerBetterThan(playerRaw *dbmapping.Player, powerLevel string) bool
|
||||||
|
|
||||||
|
ForeignProfileMessage(update *tgbotapi.Update) string
|
||||||
FormatUsername(userName string) string
|
FormatUsername(userName string) string
|
||||||
ProfileMessage(update *tgbotapi.Update, playerRaw *dbmapping.Player) string
|
ProfileMessage(update *tgbotapi.Update, playerRaw *dbmapping.Player) string
|
||||||
UsersList(update *tgbotapi.Update) string
|
UsersList(update *tgbotapi.Update) string
|
||||||
|
@ -15,8 +15,18 @@ func (w *Welcomer) alertUserWithoutProfile(update *tgbotapi.Update, newUser *tgb
|
|||||||
return "fail"
|
return "fail"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
userName := ""
|
||||||
|
if newUser.UserName != "" {
|
||||||
|
userName += "@" + newUser.UserName
|
||||||
|
} else {
|
||||||
|
userName += newUser.FirstName
|
||||||
|
if newUser.LastName != "" {
|
||||||
|
userName += " " + newUser.LastName
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
message := "*Новый вход пользователя без профиля в чат с ботом!*\n"
|
message := "*Новый вход пользователя без профиля в чат с ботом!*\n"
|
||||||
message += "В чат _" + chat.Name + "_ вошёл некто @" + newUser.UserName
|
message += "В чат _" + chat.Name + "_ вошёл некто " + c.Users.FormatUsername(userName)
|
||||||
message += ". Он получил уведомление о том, что ему нужно создать профиль в боте."
|
message += ". Он получил уведомление о том, что ему нужно создать профиль в боте."
|
||||||
|
|
||||||
msg := tgbotapi.NewMessage(alertGroupID, message)
|
msg := tgbotapi.NewMessage(alertGroupID, message)
|
||||||
@ -34,8 +44,18 @@ func (w *Welcomer) alertSpyUser(update *tgbotapi.Update, newUser *tgbotapi.User)
|
|||||||
return "fail"
|
return "fail"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
userName := ""
|
||||||
|
if newUser.UserName != "" {
|
||||||
|
userName += "@" + newUser.UserName
|
||||||
|
} else {
|
||||||
|
userName += newUser.FirstName
|
||||||
|
if newUser.LastName != "" {
|
||||||
|
userName += " " + newUser.LastName
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
message := "*Шпион в деле!*\n"
|
message := "*Шпион в деле!*\n"
|
||||||
message += "В чат _" + chat.Name + "_ вошёл некто @" + newUser.UserName
|
message += "В чат _" + chat.Name + "_ вошёл некто " + c.Users.FormatUsername(userName)
|
||||||
message += ". У него профиль другой лиги. Ждём обновлений."
|
message += ". У него профиль другой лиги. Ждём обновлений."
|
||||||
|
|
||||||
msg := tgbotapi.NewMessage(alertGroupID, message)
|
msg := tgbotapi.NewMessage(alertGroupID, message)
|
||||||
|
Reference in New Issue
Block a user