Ban and kick for Bastion separated, and added notifications
This commit is contained in:
parent
b706c2d895
commit
7ecc73cbc3
@ -216,6 +216,60 @@ func (s *Squader) kickUserFromSquadChat(user *tgbotapi.User, chatRaw *dbmapping.
|
|||||||
UserID: user.ID,
|
UserID: user.ID,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
allNo := false
|
||||||
|
kickConfig := tgbotapi.RestrictChatMemberConfig{
|
||||||
|
ChatMemberConfig: chatUserConfig,
|
||||||
|
UntilDate: 1893456000,
|
||||||
|
CanSendMessages: &allNo,
|
||||||
|
CanSendMediaMessages: &allNo,
|
||||||
|
CanAddWebPagePreviews: &allNo,
|
||||||
|
CanSendOtherMessages: &allNo,
|
||||||
|
}
|
||||||
|
|
||||||
|
_, err := c.Bot.RestrictChatMember(kickConfig)
|
||||||
|
if err != nil {
|
||||||
|
c.Log.Error(err.Error())
|
||||||
|
}
|
||||||
|
|
||||||
|
suerName := ""
|
||||||
|
if user.UserName != "" {
|
||||||
|
suerName = "@" + user.UserName
|
||||||
|
} else {
|
||||||
|
suerName = user.FirstName
|
||||||
|
if user.LastName != "" {
|
||||||
|
suerName += " " + user.LastName
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bastionChatID, _ := strconv.ParseInt(c.Cfg.SpecialChats.BastionID, 10, 64)
|
||||||
|
hqChatID, _ := strconv.ParseInt(c.Cfg.SpecialChats.HeadquartersID, 10, 64)
|
||||||
|
if chatRaw.TelegramID != bastionChatID {
|
||||||
|
// In Bastion notifications are public in default chat
|
||||||
|
commanders, ok := s.getCommandersForSquadViaChat(chatRaw)
|
||||||
|
if ok {
|
||||||
|
for i := range commanders {
|
||||||
|
message := "Некто " + c.Users.FormatUsername(suerName) + " без профиля попытался зайти в чат _" + chatRaw.Name + "_ и был изгнан ботом, так как не имеет на это прав."
|
||||||
|
|
||||||
|
msg := tgbotapi.NewMessage(int64(commanders[i].TelegramID), message)
|
||||||
|
msg.ParseMode = "Markdown"
|
||||||
|
c.Bot.Send(msg)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
message := "Некто " + c.Users.FormatUsername(suerName) + " без профиля попытался зайти в чат _Бастион Инстинкта_ и был изгнан ботом, так как не имеет на это прав."
|
||||||
|
|
||||||
|
msg := tgbotapi.NewMessage(hqChatID, message)
|
||||||
|
msg.ParseMode = "Markdown"
|
||||||
|
c.Bot.Send(msg)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *Squader) banUserFromSquadChat(user *tgbotapi.User, chatRaw *dbmapping.Chat) {
|
||||||
|
chatUserConfig := tgbotapi.ChatMemberConfig{
|
||||||
|
ChatID: chatRaw.TelegramID,
|
||||||
|
UserID: user.ID,
|
||||||
|
}
|
||||||
|
|
||||||
kickConfig := tgbotapi.KickChatMemberConfig{
|
kickConfig := tgbotapi.KickChatMemberConfig{
|
||||||
ChatMemberConfig: chatUserConfig,
|
ChatMemberConfig: chatUserConfig,
|
||||||
UntilDate: 1893456000,
|
UntilDate: 1893456000,
|
||||||
@ -237,18 +291,25 @@ func (s *Squader) kickUserFromSquadChat(user *tgbotapi.User, chatRaw *dbmapping.
|
|||||||
}
|
}
|
||||||
|
|
||||||
bastionChatID, _ := strconv.ParseInt(c.Cfg.SpecialChats.BastionID, 10, 64)
|
bastionChatID, _ := strconv.ParseInt(c.Cfg.SpecialChats.BastionID, 10, 64)
|
||||||
|
hqChatID, _ := strconv.ParseInt(c.Cfg.SpecialChats.HeadquartersID, 10, 64)
|
||||||
if chatRaw.TelegramID != bastionChatID {
|
if chatRaw.TelegramID != bastionChatID {
|
||||||
// In Bastion notifications are public in default chat
|
// In Bastion notifications are public in default chat
|
||||||
commanders, ok := s.getCommandersForSquadViaChat(chatRaw)
|
commanders, ok := s.getCommandersForSquadViaChat(chatRaw)
|
||||||
if ok {
|
if ok {
|
||||||
for i := range commanders {
|
for i := range commanders {
|
||||||
message := "Некто " + c.Users.FormatUsername(suerName) + " попытался зайти в чат _" + chatRaw.Name + "_ и был изгнан ботом, так как не имеет на это прав."
|
message := "Некто " + c.Users.FormatUsername(suerName) + " попытался зайти в чат _" + chatRaw.Name + "_ и был изгнан ботом, так как является шпионом."
|
||||||
|
|
||||||
msg := tgbotapi.NewMessage(int64(commanders[i].TelegramID), message)
|
msg := tgbotapi.NewMessage(int64(commanders[i].TelegramID), message)
|
||||||
msg.ParseMode = "Markdown"
|
msg.ParseMode = "Markdown"
|
||||||
c.Bot.Send(msg)
|
c.Bot.Send(msg)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
message := "Некто " + c.Users.FormatUsername(suerName) + " попытался зайти в чат _Бастион Инстинкта_ и был изгнан ботом, так как является шпионом."
|
||||||
|
|
||||||
|
msg := tgbotapi.NewMessage(hqChatID, message)
|
||||||
|
msg.ParseMode = "Markdown"
|
||||||
|
c.Bot.Send(msg)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -572,6 +633,7 @@ func (s *Squader) ProtectBastion(update *tgbotapi.Update, newUser *tgbotapi.User
|
|||||||
msg.ParseMode = "Markdown"
|
msg.ParseMode = "Markdown"
|
||||||
|
|
||||||
c.Bot.Send(msg)
|
c.Bot.Send(msg)
|
||||||
|
s.kickUserFromSquadChat(newUser, &chatRaw)
|
||||||
} else {
|
} else {
|
||||||
message := "Привет, " + c.Users.FormatUsername(userName) + "! Там переход между лигами не завезли случайно? Переходи в нашу Лигу, будем рады тебя видеть... а пока — вход в наши чаты закрыт!"
|
message := "Привет, " + c.Users.FormatUsername(userName) + "! Там переход между лигами не завезли случайно? Переходи в нашу Лигу, будем рады тебя видеть... а пока — вход в наши чаты закрыт!"
|
||||||
|
|
||||||
@ -579,8 +641,8 @@ func (s *Squader) ProtectBastion(update *tgbotapi.Update, newUser *tgbotapi.User
|
|||||||
msg.ParseMode = "Markdown"
|
msg.ParseMode = "Markdown"
|
||||||
|
|
||||||
c.Bot.Send(msg)
|
c.Bot.Send(msg)
|
||||||
|
s.banUserFromSquadChat(newUser, &chatRaw)
|
||||||
}
|
}
|
||||||
s.kickUserFromSquadChat(newUser, &chatRaw)
|
|
||||||
return "fail"
|
return "fail"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user