Ban and kick for Bastion separated, and added notifications
This commit is contained in:
		| @@ -216,6 +216,60 @@ func (s *Squader) kickUserFromSquadChat(user *tgbotapi.User, chatRaw *dbmapping. | ||||
| 		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{ | ||||
| 		ChatMemberConfig: chatUserConfig, | ||||
| 		UntilDate:        1893456000, | ||||
| @@ -237,18 +291,25 @@ func (s *Squader) kickUserFromSquadChat(user *tgbotapi.User, chatRaw *dbmapping. | ||||
| 	} | ||||
|  | ||||
| 	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 + "_ и был изгнан ботом, так как не имеет на это прав." | ||||
| 				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) | ||||
| 	} | ||||
| } | ||||
|  | ||||
| @@ -572,6 +633,7 @@ func (s *Squader) ProtectBastion(update *tgbotapi.Update, newUser *tgbotapi.User | ||||
| 				msg.ParseMode = "Markdown" | ||||
|  | ||||
| 				c.Bot.Send(msg) | ||||
| 				s.kickUserFromSquadChat(newUser, &chatRaw) | ||||
| 			} else { | ||||
| 				message := "Привет, " + c.Users.FormatUsername(userName) + "! Там переход между лигами не завезли случайно? Переходи в нашу Лигу, будем рады тебя видеть... а пока — вход в наши чаты закрыт!" | ||||
|  | ||||
| @@ -579,8 +641,8 @@ func (s *Squader) ProtectBastion(update *tgbotapi.Update, newUser *tgbotapi.User | ||||
| 				msg.ParseMode = "Markdown" | ||||
|  | ||||
| 				c.Bot.Send(msg) | ||||
| 				s.banUserFromSquadChat(newUser, &chatRaw) | ||||
| 			} | ||||
| 			s.kickUserFromSquadChat(newUser, &chatRaw) | ||||
| 			return "fail" | ||||
| 		} | ||||
| 	} | ||||
|   | ||||
		Reference in New Issue
	
	Block a user