|  | @@ -202,9 +202,13 @@ func (t *Tgbot) OnReceive() {
 | 
											
												
													
														|  |  	}, th.AnyCallbackQueryWithMessage())
 |  |  	}, th.AnyCallbackQueryWithMessage())
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  	botHandler.HandleMessage(func(_ *telego.Bot, message telego.Message) {
 |  |  	botHandler.HandleMessage(func(_ *telego.Bot, message telego.Message) {
 | 
											
												
													
														|  | -		if message.UserShared != nil {
 |  | 
 | 
											
												
													
														|  | 
 |  | +		if message.UsersShared != nil {
 | 
											
												
													
														|  |  			if checkAdmin(message.From.ID) {
 |  |  			if checkAdmin(message.From.ID) {
 | 
											
												
													
														|  | -				err := t.inboundService.SetClientTelegramUserID(message.UserShared.RequestID, strconv.FormatInt(message.UserShared.UserID, 10))
 |  | 
 | 
											
												
													
														|  | 
 |  | +				userIDsStr := ""
 | 
											
												
													
														|  | 
 |  | +				for _, userID := range message.UsersShared.UserIDs {
 | 
											
												
													
														|  | 
 |  | +					userIDsStr += strconv.FormatInt(userID, 10) + " "
 | 
											
												
													
														|  | 
 |  | +				}
 | 
											
												
													
														|  | 
 |  | +				err := t.inboundService.SetClientTelegramUserID(message.UsersShared.RequestID, userIDsStr)
 | 
											
												
													
														|  |  				output := ""
 |  |  				output := ""
 | 
											
												
													
														|  |  				if err != nil {
 |  |  				if err != nil {
 | 
											
												
													
														|  |  					output += t.I18nBot("tgbot.messages.selectUserFailed")
 |  |  					output += t.I18nBot("tgbot.messages.selectUserFailed")
 | 
											
										
											
												
													
														|  | @@ -277,7 +281,7 @@ func (t *Tgbot) answerCommand(message *telego.Message, chatId int64, isAdmin boo
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  func (t *Tgbot) asnwerCallback(callbackQuery *telego.CallbackQuery, isAdmin bool) {
 |  |  func (t *Tgbot) asnwerCallback(callbackQuery *telego.CallbackQuery, isAdmin bool) {
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -	chatId := callbackQuery.Message.Chat.ID
 |  | 
 | 
											
												
													
														|  | 
 |  | +	chatId := callbackQuery.Message.GetChat().ID
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  	if isAdmin {
 |  |  	if isAdmin {
 | 
											
												
													
														|  |  		// get query from hash storage
 |  |  		// get query from hash storage
 | 
											
										
											
												
													
														|  | @@ -296,22 +300,22 @@ func (t *Tgbot) asnwerCallback(callbackQuery *telego.CallbackQuery, isAdmin bool
 | 
											
												
													
														|  |  				t.searchClient(chatId, email)
 |  |  				t.searchClient(chatId, email)
 | 
											
												
													
														|  |  			case "client_refresh":
 |  |  			case "client_refresh":
 | 
											
												
													
														|  |  				t.sendCallbackAnswerTgBot(callbackQuery.ID, t.I18nBot("tgbot.answers.clientRefreshSuccess", "Email=="+email))
 |  |  				t.sendCallbackAnswerTgBot(callbackQuery.ID, t.I18nBot("tgbot.answers.clientRefreshSuccess", "Email=="+email))
 | 
											
												
													
														|  | -				t.searchClient(chatId, email, callbackQuery.Message.MessageID)
 |  | 
 | 
											
												
													
														|  | 
 |  | +				t.searchClient(chatId, email, callbackQuery.Message.GetMessageID())
 | 
											
												
													
														|  |  			case "client_cancel":
 |  |  			case "client_cancel":
 | 
											
												
													
														|  |  				t.sendCallbackAnswerTgBot(callbackQuery.ID, t.I18nBot("tgbot.answers.canceled", "Email=="+email))
 |  |  				t.sendCallbackAnswerTgBot(callbackQuery.ID, t.I18nBot("tgbot.answers.canceled", "Email=="+email))
 | 
											
												
													
														|  | -				t.searchClient(chatId, email, callbackQuery.Message.MessageID)
 |  | 
 | 
											
												
													
														|  | 
 |  | +				t.searchClient(chatId, email, callbackQuery.Message.GetMessageID())
 | 
											
												
													
														|  |  			case "ips_refresh":
 |  |  			case "ips_refresh":
 | 
											
												
													
														|  |  				t.sendCallbackAnswerTgBot(callbackQuery.ID, t.I18nBot("tgbot.answers.IpRefreshSuccess", "Email=="+email))
 |  |  				t.sendCallbackAnswerTgBot(callbackQuery.ID, t.I18nBot("tgbot.answers.IpRefreshSuccess", "Email=="+email))
 | 
											
												
													
														|  | -				t.searchClientIps(chatId, email, callbackQuery.Message.MessageID)
 |  | 
 | 
											
												
													
														|  | 
 |  | +				t.searchClientIps(chatId, email, callbackQuery.Message.GetMessageID())
 | 
											
												
													
														|  |  			case "ips_cancel":
 |  |  			case "ips_cancel":
 | 
											
												
													
														|  |  				t.sendCallbackAnswerTgBot(callbackQuery.ID, t.I18nBot("tgbot.answers.canceled", "Email=="+email))
 |  |  				t.sendCallbackAnswerTgBot(callbackQuery.ID, t.I18nBot("tgbot.answers.canceled", "Email=="+email))
 | 
											
												
													
														|  | -				t.searchClientIps(chatId, email, callbackQuery.Message.MessageID)
 |  | 
 | 
											
												
													
														|  | 
 |  | +				t.searchClientIps(chatId, email, callbackQuery.Message.GetMessageID())
 | 
											
												
													
														|  |  			case "tgid_refresh":
 |  |  			case "tgid_refresh":
 | 
											
												
													
														|  |  				t.sendCallbackAnswerTgBot(callbackQuery.ID, t.I18nBot("tgbot.answers.TGIdRefreshSuccess", "Email=="+email))
 |  |  				t.sendCallbackAnswerTgBot(callbackQuery.ID, t.I18nBot("tgbot.answers.TGIdRefreshSuccess", "Email=="+email))
 | 
											
												
													
														|  | -				t.clientTelegramUserInfo(chatId, email, callbackQuery.Message.MessageID)
 |  | 
 | 
											
												
													
														|  | 
 |  | +				t.clientTelegramUserInfo(chatId, email, callbackQuery.Message.GetMessageID())
 | 
											
												
													
														|  |  			case "tgid_cancel":
 |  |  			case "tgid_cancel":
 | 
											
												
													
														|  |  				t.sendCallbackAnswerTgBot(callbackQuery.ID, t.I18nBot("tgbot.answers.canceled", "Email=="+email))
 |  |  				t.sendCallbackAnswerTgBot(callbackQuery.ID, t.I18nBot("tgbot.answers.canceled", "Email=="+email))
 | 
											
												
													
														|  | -				t.clientTelegramUserInfo(chatId, email, callbackQuery.Message.MessageID)
 |  | 
 | 
											
												
													
														|  | 
 |  | +				t.clientTelegramUserInfo(chatId, email, callbackQuery.Message.GetMessageID())
 | 
											
												
													
														|  |  			case "reset_traffic":
 |  |  			case "reset_traffic":
 | 
											
												
													
														|  |  				inlineKeyboard := tu.InlineKeyboard(
 |  |  				inlineKeyboard := tu.InlineKeyboard(
 | 
											
												
													
														|  |  					tu.InlineKeyboardRow(
 |  |  					tu.InlineKeyboardRow(
 | 
											
										
											
												
													
														|  | @@ -321,13 +325,13 @@ func (t *Tgbot) asnwerCallback(callbackQuery *telego.CallbackQuery, isAdmin bool
 | 
											
												
													
														|  |  						tu.InlineKeyboardButton(t.I18nBot("tgbot.buttons.confirmResetTraffic")).WithCallbackData(t.encodeQuery("reset_traffic_c "+email)),
 |  |  						tu.InlineKeyboardButton(t.I18nBot("tgbot.buttons.confirmResetTraffic")).WithCallbackData(t.encodeQuery("reset_traffic_c "+email)),
 | 
											
												
													
														|  |  					),
 |  |  					),
 | 
											
												
													
														|  |  				)
 |  |  				)
 | 
											
												
													
														|  | -				t.editMessageCallbackTgBot(chatId, callbackQuery.Message.MessageID, inlineKeyboard)
 |  | 
 | 
											
												
													
														|  | 
 |  | +				t.editMessageCallbackTgBot(chatId, callbackQuery.Message.GetMessageID(), inlineKeyboard)
 | 
											
												
													
														|  |  			case "reset_traffic_c":
 |  |  			case "reset_traffic_c":
 | 
											
												
													
														|  |  				err := t.inboundService.ResetClientTrafficByEmail(email)
 |  |  				err := t.inboundService.ResetClientTrafficByEmail(email)
 | 
											
												
													
														|  |  				if err == nil {
 |  |  				if err == nil {
 | 
											
												
													
														|  |  					t.xrayService.SetToNeedRestart()
 |  |  					t.xrayService.SetToNeedRestart()
 | 
											
												
													
														|  |  					t.sendCallbackAnswerTgBot(callbackQuery.ID, t.I18nBot("tgbot.answers.resetTrafficSuccess", "Email=="+email))
 |  |  					t.sendCallbackAnswerTgBot(callbackQuery.ID, t.I18nBot("tgbot.answers.resetTrafficSuccess", "Email=="+email))
 | 
											
												
													
														|  | -					t.searchClient(chatId, email, callbackQuery.Message.MessageID)
 |  | 
 | 
											
												
													
														|  | 
 |  | +					t.searchClient(chatId, email, callbackQuery.Message.GetMessageID())
 | 
											
												
													
														|  |  				} else {
 |  |  				} else {
 | 
											
												
													
														|  |  					t.sendCallbackAnswerTgBot(callbackQuery.ID, t.I18nBot("tgbot.answers.errorOperation"))
 |  |  					t.sendCallbackAnswerTgBot(callbackQuery.ID, t.I18nBot("tgbot.answers.errorOperation"))
 | 
											
												
													
														|  |  				}
 |  |  				}
 | 
											
										
											
												
													
														|  | @@ -361,7 +365,7 @@ func (t *Tgbot) asnwerCallback(callbackQuery *telego.CallbackQuery, isAdmin bool
 | 
											
												
													
														|  |  						tu.InlineKeyboardButton("200 GB").WithCallbackData(t.encodeQuery("limit_traffic_c "+email+" 200")),
 |  |  						tu.InlineKeyboardButton("200 GB").WithCallbackData(t.encodeQuery("limit_traffic_c "+email+" 200")),
 | 
											
												
													
														|  |  					),
 |  |  					),
 | 
											
												
													
														|  |  				)
 |  |  				)
 | 
											
												
													
														|  | -				t.editMessageCallbackTgBot(chatId, callbackQuery.Message.MessageID, inlineKeyboard)
 |  | 
 | 
											
												
													
														|  | 
 |  | +				t.editMessageCallbackTgBot(chatId, callbackQuery.Message.GetMessageID(), inlineKeyboard)
 | 
											
												
													
														|  |  			case "limit_traffic_c":
 |  |  			case "limit_traffic_c":
 | 
											
												
													
														|  |  				if len(dataArray) == 3 {
 |  |  				if len(dataArray) == 3 {
 | 
											
												
													
														|  |  					limitTraffic, err := strconv.Atoi(dataArray[2])
 |  |  					limitTraffic, err := strconv.Atoi(dataArray[2])
 | 
											
										
											
												
													
														|  | @@ -370,13 +374,13 @@ func (t *Tgbot) asnwerCallback(callbackQuery *telego.CallbackQuery, isAdmin bool
 | 
											
												
													
														|  |  						if err == nil {
 |  |  						if err == nil {
 | 
											
												
													
														|  |  							t.xrayService.SetToNeedRestart()
 |  |  							t.xrayService.SetToNeedRestart()
 | 
											
												
													
														|  |  							t.sendCallbackAnswerTgBot(callbackQuery.ID, t.I18nBot("tgbot.answers.setTrafficLimitSuccess", "Email=="+email))
 |  |  							t.sendCallbackAnswerTgBot(callbackQuery.ID, t.I18nBot("tgbot.answers.setTrafficLimitSuccess", "Email=="+email))
 | 
											
												
													
														|  | -							t.searchClient(chatId, email, callbackQuery.Message.MessageID)
 |  | 
 | 
											
												
													
														|  | 
 |  | +							t.searchClient(chatId, email, callbackQuery.Message.GetMessageID())
 | 
											
												
													
														|  |  							return
 |  |  							return
 | 
											
												
													
														|  |  						}
 |  |  						}
 | 
											
												
													
														|  |  					}
 |  |  					}
 | 
											
												
													
														|  |  				}
 |  |  				}
 | 
											
												
													
														|  |  				t.sendCallbackAnswerTgBot(callbackQuery.ID, t.I18nBot("tgbot.answers.errorOperation"))
 |  |  				t.sendCallbackAnswerTgBot(callbackQuery.ID, t.I18nBot("tgbot.answers.errorOperation"))
 | 
											
												
													
														|  | -				t.searchClient(chatId, email, callbackQuery.Message.MessageID)
 |  | 
 | 
											
												
													
														|  | 
 |  | +				t.searchClient(chatId, email, callbackQuery.Message.GetMessageID())
 | 
											
												
													
														|  |  			case "limit_traffic_in":
 |  |  			case "limit_traffic_in":
 | 
											
												
													
														|  |  				if len(dataArray) >= 3 {
 |  |  				if len(dataArray) >= 3 {
 | 
											
												
													
														|  |  					oldInputNumber, err := strconv.Atoi(dataArray[2])
 |  |  					oldInputNumber, err := strconv.Atoi(dataArray[2])
 | 
											
										
											
												
													
														|  | @@ -432,12 +436,12 @@ func (t *Tgbot) asnwerCallback(callbackQuery *telego.CallbackQuery, isAdmin bool
 | 
											
												
													
														|  |  								tu.InlineKeyboardButton("⬅️").WithCallbackData(t.encodeQuery("limit_traffic_in "+email+" "+strconv.Itoa(inputNumber)+" -1")),
 |  |  								tu.InlineKeyboardButton("⬅️").WithCallbackData(t.encodeQuery("limit_traffic_in "+email+" "+strconv.Itoa(inputNumber)+" -1")),
 | 
											
												
													
														|  |  							),
 |  |  							),
 | 
											
												
													
														|  |  						)
 |  |  						)
 | 
											
												
													
														|  | -						t.editMessageCallbackTgBot(chatId, callbackQuery.Message.MessageID, inlineKeyboard)
 |  | 
 | 
											
												
													
														|  | 
 |  | +						t.editMessageCallbackTgBot(chatId, callbackQuery.Message.GetMessageID(), inlineKeyboard)
 | 
											
												
													
														|  |  						return
 |  |  						return
 | 
											
												
													
														|  |  					}
 |  |  					}
 | 
											
												
													
														|  |  				}
 |  |  				}
 | 
											
												
													
														|  |  				t.sendCallbackAnswerTgBot(callbackQuery.ID, t.I18nBot("tgbot.answers.errorOperation"))
 |  |  				t.sendCallbackAnswerTgBot(callbackQuery.ID, t.I18nBot("tgbot.answers.errorOperation"))
 | 
											
												
													
														|  | -				t.searchClient(chatId, email, callbackQuery.Message.MessageID)
 |  | 
 | 
											
												
													
														|  | 
 |  | +				t.searchClient(chatId, email, callbackQuery.Message.GetMessageID())
 | 
											
												
													
														|  |  			case "reset_exp":
 |  |  			case "reset_exp":
 | 
											
												
													
														|  |  				inlineKeyboard := tu.InlineKeyboard(
 |  |  				inlineKeyboard := tu.InlineKeyboard(
 | 
											
												
													
														|  |  					tu.InlineKeyboardRow(
 |  |  					tu.InlineKeyboardRow(
 | 
											
										
											
												
													
														|  | @@ -464,7 +468,7 @@ func (t *Tgbot) asnwerCallback(callbackQuery *telego.CallbackQuery, isAdmin bool
 | 
											
												
													
														|  |  						tu.InlineKeyboardButton(t.I18nBot("tgbot.add")+" 12 "+t.I18nBot("tgbot.months")).WithCallbackData(t.encodeQuery("reset_exp_c "+email+" 365")),
 |  |  						tu.InlineKeyboardButton(t.I18nBot("tgbot.add")+" 12 "+t.I18nBot("tgbot.months")).WithCallbackData(t.encodeQuery("reset_exp_c "+email+" 365")),
 | 
											
												
													
														|  |  					),
 |  |  					),
 | 
											
												
													
														|  |  				)
 |  |  				)
 | 
											
												
													
														|  | -				t.editMessageCallbackTgBot(chatId, callbackQuery.Message.MessageID, inlineKeyboard)
 |  | 
 | 
											
												
													
														|  | 
 |  | +				t.editMessageCallbackTgBot(chatId, callbackQuery.Message.GetMessageID(), inlineKeyboard)
 | 
											
												
													
														|  |  			case "reset_exp_c":
 |  |  			case "reset_exp_c":
 | 
											
												
													
														|  |  				if len(dataArray) == 3 {
 |  |  				if len(dataArray) == 3 {
 | 
											
												
													
														|  |  					days, err := strconv.Atoi(dataArray[2])
 |  |  					days, err := strconv.Atoi(dataArray[2])
 | 
											
										
											
												
													
														|  | @@ -499,13 +503,13 @@ func (t *Tgbot) asnwerCallback(callbackQuery *telego.CallbackQuery, isAdmin bool
 | 
											
												
													
														|  |  						if err == nil {
 |  |  						if err == nil {
 | 
											
												
													
														|  |  							t.xrayService.SetToNeedRestart()
 |  |  							t.xrayService.SetToNeedRestart()
 | 
											
												
													
														|  |  							t.sendCallbackAnswerTgBot(callbackQuery.ID, t.I18nBot("tgbot.answers.expireResetSuccess", "Email=="+email))
 |  |  							t.sendCallbackAnswerTgBot(callbackQuery.ID, t.I18nBot("tgbot.answers.expireResetSuccess", "Email=="+email))
 | 
											
												
													
														|  | -							t.searchClient(chatId, email, callbackQuery.Message.MessageID)
 |  | 
 | 
											
												
													
														|  | 
 |  | +							t.searchClient(chatId, email, callbackQuery.Message.GetMessageID())
 | 
											
												
													
														|  |  							return
 |  |  							return
 | 
											
												
													
														|  |  						}
 |  |  						}
 | 
											
												
													
														|  |  					}
 |  |  					}
 | 
											
												
													
														|  |  				}
 |  |  				}
 | 
											
												
													
														|  |  				t.sendCallbackAnswerTgBot(callbackQuery.ID, t.I18nBot("tgbot.answers.errorOperation"))
 |  |  				t.sendCallbackAnswerTgBot(callbackQuery.ID, t.I18nBot("tgbot.answers.errorOperation"))
 | 
											
												
													
														|  | -				t.searchClient(chatId, email, callbackQuery.Message.MessageID)
 |  | 
 | 
											
												
													
														|  | 
 |  | +				t.searchClient(chatId, email, callbackQuery.Message.GetMessageID())
 | 
											
												
													
														|  |  			case "reset_exp_in":
 |  |  			case "reset_exp_in":
 | 
											
												
													
														|  |  				if len(dataArray) >= 3 {
 |  |  				if len(dataArray) >= 3 {
 | 
											
												
													
														|  |  					oldInputNumber, err := strconv.Atoi(dataArray[2])
 |  |  					oldInputNumber, err := strconv.Atoi(dataArray[2])
 | 
											
										
											
												
													
														|  | @@ -561,12 +565,12 @@ func (t *Tgbot) asnwerCallback(callbackQuery *telego.CallbackQuery, isAdmin bool
 | 
											
												
													
														|  |  								tu.InlineKeyboardButton("⬅️").WithCallbackData(t.encodeQuery("reset_exp_in "+email+" "+strconv.Itoa(inputNumber)+" -1")),
 |  |  								tu.InlineKeyboardButton("⬅️").WithCallbackData(t.encodeQuery("reset_exp_in "+email+" "+strconv.Itoa(inputNumber)+" -1")),
 | 
											
												
													
														|  |  							),
 |  |  							),
 | 
											
												
													
														|  |  						)
 |  |  						)
 | 
											
												
													
														|  | -						t.editMessageCallbackTgBot(chatId, callbackQuery.Message.MessageID, inlineKeyboard)
 |  | 
 | 
											
												
													
														|  | 
 |  | +						t.editMessageCallbackTgBot(chatId, callbackQuery.Message.GetMessageID(), inlineKeyboard)
 | 
											
												
													
														|  |  						return
 |  |  						return
 | 
											
												
													
														|  |  					}
 |  |  					}
 | 
											
												
													
														|  |  				}
 |  |  				}
 | 
											
												
													
														|  |  				t.sendCallbackAnswerTgBot(callbackQuery.ID, t.I18nBot("tgbot.answers.errorOperation"))
 |  |  				t.sendCallbackAnswerTgBot(callbackQuery.ID, t.I18nBot("tgbot.answers.errorOperation"))
 | 
											
												
													
														|  | -				t.searchClient(chatId, email, callbackQuery.Message.MessageID)
 |  | 
 | 
											
												
													
														|  | 
 |  | +				t.searchClient(chatId, email, callbackQuery.Message.GetMessageID())
 | 
											
												
													
														|  |  			case "ip_limit":
 |  |  			case "ip_limit":
 | 
											
												
													
														|  |  				inlineKeyboard := tu.InlineKeyboard(
 |  |  				inlineKeyboard := tu.InlineKeyboard(
 | 
											
												
													
														|  |  					tu.InlineKeyboardRow(
 |  |  					tu.InlineKeyboardRow(
 | 
											
										
											
												
													
														|  | @@ -595,7 +599,7 @@ func (t *Tgbot) asnwerCallback(callbackQuery *telego.CallbackQuery, isAdmin bool
 | 
											
												
													
														|  |  						tu.InlineKeyboardButton("10").WithCallbackData(t.encodeQuery("ip_limit_c "+email+" 10")),
 |  |  						tu.InlineKeyboardButton("10").WithCallbackData(t.encodeQuery("ip_limit_c "+email+" 10")),
 | 
											
												
													
														|  |  					),
 |  |  					),
 | 
											
												
													
														|  |  				)
 |  |  				)
 | 
											
												
													
														|  | -				t.editMessageCallbackTgBot(chatId, callbackQuery.Message.MessageID, inlineKeyboard)
 |  | 
 | 
											
												
													
														|  | 
 |  | +				t.editMessageCallbackTgBot(chatId, callbackQuery.Message.GetMessageID(), inlineKeyboard)
 | 
											
												
													
														|  |  			case "ip_limit_c":
 |  |  			case "ip_limit_c":
 | 
											
												
													
														|  |  				if len(dataArray) == 3 {
 |  |  				if len(dataArray) == 3 {
 | 
											
												
													
														|  |  					count, err := strconv.Atoi(dataArray[2])
 |  |  					count, err := strconv.Atoi(dataArray[2])
 | 
											
										
											
												
													
														|  | @@ -604,13 +608,13 @@ func (t *Tgbot) asnwerCallback(callbackQuery *telego.CallbackQuery, isAdmin bool
 | 
											
												
													
														|  |  						if err == nil {
 |  |  						if err == nil {
 | 
											
												
													
														|  |  							t.xrayService.SetToNeedRestart()
 |  |  							t.xrayService.SetToNeedRestart()
 | 
											
												
													
														|  |  							t.sendCallbackAnswerTgBot(callbackQuery.ID, t.I18nBot("tgbot.answers.resetIpSuccess", "Email=="+email, "Count=="+strconv.Itoa(count)))
 |  |  							t.sendCallbackAnswerTgBot(callbackQuery.ID, t.I18nBot("tgbot.answers.resetIpSuccess", "Email=="+email, "Count=="+strconv.Itoa(count)))
 | 
											
												
													
														|  | -							t.searchClient(chatId, email, callbackQuery.Message.MessageID)
 |  | 
 | 
											
												
													
														|  | 
 |  | +							t.searchClient(chatId, email, callbackQuery.Message.GetMessageID())
 | 
											
												
													
														|  |  							return
 |  |  							return
 | 
											
												
													
														|  |  						}
 |  |  						}
 | 
											
												
													
														|  |  					}
 |  |  					}
 | 
											
												
													
														|  |  				}
 |  |  				}
 | 
											
												
													
														|  |  				t.sendCallbackAnswerTgBot(callbackQuery.ID, t.I18nBot("tgbot.answers.errorOperation"))
 |  |  				t.sendCallbackAnswerTgBot(callbackQuery.ID, t.I18nBot("tgbot.answers.errorOperation"))
 | 
											
												
													
														|  | -				t.searchClient(chatId, email, callbackQuery.Message.MessageID)
 |  | 
 | 
											
												
													
														|  | 
 |  | +				t.searchClient(chatId, email, callbackQuery.Message.GetMessageID())
 | 
											
												
													
														|  |  			case "ip_limit_in":
 |  |  			case "ip_limit_in":
 | 
											
												
													
														|  |  				if len(dataArray) >= 3 {
 |  |  				if len(dataArray) >= 3 {
 | 
											
												
													
														|  |  					oldInputNumber, err := strconv.Atoi(dataArray[2])
 |  |  					oldInputNumber, err := strconv.Atoi(dataArray[2])
 | 
											
										
											
												
													
														|  | @@ -666,12 +670,12 @@ func (t *Tgbot) asnwerCallback(callbackQuery *telego.CallbackQuery, isAdmin bool
 | 
											
												
													
														|  |  								tu.InlineKeyboardButton("⬅️").WithCallbackData(t.encodeQuery("ip_limit_in "+email+" "+strconv.Itoa(inputNumber)+" -1")),
 |  |  								tu.InlineKeyboardButton("⬅️").WithCallbackData(t.encodeQuery("ip_limit_in "+email+" "+strconv.Itoa(inputNumber)+" -1")),
 | 
											
												
													
														|  |  							),
 |  |  							),
 | 
											
												
													
														|  |  						)
 |  |  						)
 | 
											
												
													
														|  | -						t.editMessageCallbackTgBot(chatId, callbackQuery.Message.MessageID, inlineKeyboard)
 |  | 
 | 
											
												
													
														|  | 
 |  | +						t.editMessageCallbackTgBot(chatId, callbackQuery.Message.GetMessageID(), inlineKeyboard)
 | 
											
												
													
														|  |  						return
 |  |  						return
 | 
											
												
													
														|  |  					}
 |  |  					}
 | 
											
												
													
														|  |  				}
 |  |  				}
 | 
											
												
													
														|  |  				t.sendCallbackAnswerTgBot(callbackQuery.ID, t.I18nBot("tgbot.answers.errorOperation"))
 |  |  				t.sendCallbackAnswerTgBot(callbackQuery.ID, t.I18nBot("tgbot.answers.errorOperation"))
 | 
											
												
													
														|  | -				t.searchClient(chatId, email, callbackQuery.Message.MessageID)
 |  | 
 | 
											
												
													
														|  | 
 |  | +				t.searchClient(chatId, email, callbackQuery.Message.GetMessageID())
 | 
											
												
													
														|  |  			case "clear_ips":
 |  |  			case "clear_ips":
 | 
											
												
													
														|  |  				inlineKeyboard := tu.InlineKeyboard(
 |  |  				inlineKeyboard := tu.InlineKeyboard(
 | 
											
												
													
														|  |  					tu.InlineKeyboardRow(
 |  |  					tu.InlineKeyboardRow(
 | 
											
										
											
												
													
														|  | @@ -681,12 +685,12 @@ func (t *Tgbot) asnwerCallback(callbackQuery *telego.CallbackQuery, isAdmin bool
 | 
											
												
													
														|  |  						tu.InlineKeyboardButton(t.I18nBot("tgbot.buttons.confirmClearIps")).WithCallbackData(t.encodeQuery("clear_ips_c "+email)),
 |  |  						tu.InlineKeyboardButton(t.I18nBot("tgbot.buttons.confirmClearIps")).WithCallbackData(t.encodeQuery("clear_ips_c "+email)),
 | 
											
												
													
														|  |  					),
 |  |  					),
 | 
											
												
													
														|  |  				)
 |  |  				)
 | 
											
												
													
														|  | -				t.editMessageCallbackTgBot(chatId, callbackQuery.Message.MessageID, inlineKeyboard)
 |  | 
 | 
											
												
													
														|  | 
 |  | +				t.editMessageCallbackTgBot(chatId, callbackQuery.Message.GetMessageID(), inlineKeyboard)
 | 
											
												
													
														|  |  			case "clear_ips_c":
 |  |  			case "clear_ips_c":
 | 
											
												
													
														|  |  				err := t.inboundService.ClearClientIps(email)
 |  |  				err := t.inboundService.ClearClientIps(email)
 | 
											
												
													
														|  |  				if err == nil {
 |  |  				if err == nil {
 | 
											
												
													
														|  |  					t.sendCallbackAnswerTgBot(callbackQuery.ID, t.I18nBot("tgbot.answers.clearIpSuccess", "Email=="+email))
 |  |  					t.sendCallbackAnswerTgBot(callbackQuery.ID, t.I18nBot("tgbot.answers.clearIpSuccess", "Email=="+email))
 | 
											
												
													
														|  | -					t.searchClientIps(chatId, email, callbackQuery.Message.MessageID)
 |  | 
 | 
											
												
													
														|  | 
 |  | +					t.searchClientIps(chatId, email, callbackQuery.Message.GetMessageID())
 | 
											
												
													
														|  |  				} else {
 |  |  				} else {
 | 
											
												
													
														|  |  					t.sendCallbackAnswerTgBot(callbackQuery.ID, t.I18nBot("tgbot.answers.errorOperation"))
 |  |  					t.sendCallbackAnswerTgBot(callbackQuery.ID, t.I18nBot("tgbot.answers.errorOperation"))
 | 
											
												
													
														|  |  				}
 |  |  				}
 | 
											
										
											
												
													
														|  | @@ -705,7 +709,7 @@ func (t *Tgbot) asnwerCallback(callbackQuery *telego.CallbackQuery, isAdmin bool
 | 
											
												
													
														|  |  						tu.InlineKeyboardButton(t.I18nBot("tgbot.buttons.confirmRemoveTGUser")).WithCallbackData(t.encodeQuery("tgid_remove_c "+email)),
 |  |  						tu.InlineKeyboardButton(t.I18nBot("tgbot.buttons.confirmRemoveTGUser")).WithCallbackData(t.encodeQuery("tgid_remove_c "+email)),
 | 
											
												
													
														|  |  					),
 |  |  					),
 | 
											
												
													
														|  |  				)
 |  |  				)
 | 
											
												
													
														|  | -				t.editMessageCallbackTgBot(chatId, callbackQuery.Message.MessageID, inlineKeyboard)
 |  | 
 | 
											
												
													
														|  | 
 |  | +				t.editMessageCallbackTgBot(chatId, callbackQuery.Message.GetMessageID(), inlineKeyboard)
 | 
											
												
													
														|  |  			case "tgid_remove_c":
 |  |  			case "tgid_remove_c":
 | 
											
												
													
														|  |  				traffic, err := t.inboundService.GetClientTrafficByEmail(email)
 |  |  				traffic, err := t.inboundService.GetClientTrafficByEmail(email)
 | 
											
												
													
														|  |  				if err != nil || traffic == nil {
 |  |  				if err != nil || traffic == nil {
 | 
											
										
											
												
													
														|  | @@ -715,7 +719,7 @@ func (t *Tgbot) asnwerCallback(callbackQuery *telego.CallbackQuery, isAdmin bool
 | 
											
												
													
														|  |  				err = t.inboundService.SetClientTelegramUserID(traffic.Id, "")
 |  |  				err = t.inboundService.SetClientTelegramUserID(traffic.Id, "")
 | 
											
												
													
														|  |  				if err == nil {
 |  |  				if err == nil {
 | 
											
												
													
														|  |  					t.sendCallbackAnswerTgBot(callbackQuery.ID, t.I18nBot("tgbot.answers.removedTGUserSuccess", "Email=="+email))
 |  |  					t.sendCallbackAnswerTgBot(callbackQuery.ID, t.I18nBot("tgbot.answers.removedTGUserSuccess", "Email=="+email))
 | 
											
												
													
														|  | -					t.clientTelegramUserInfo(chatId, email, callbackQuery.Message.MessageID)
 |  | 
 | 
											
												
													
														|  | 
 |  | +					t.clientTelegramUserInfo(chatId, email, callbackQuery.Message.GetMessageID())
 | 
											
												
													
														|  |  				} else {
 |  |  				} else {
 | 
											
												
													
														|  |  					t.sendCallbackAnswerTgBot(callbackQuery.ID, t.I18nBot("tgbot.answers.errorOperation"))
 |  |  					t.sendCallbackAnswerTgBot(callbackQuery.ID, t.I18nBot("tgbot.answers.errorOperation"))
 | 
											
												
													
														|  |  				}
 |  |  				}
 | 
											
										
											
												
													
														|  | @@ -728,7 +732,7 @@ func (t *Tgbot) asnwerCallback(callbackQuery *telego.CallbackQuery, isAdmin bool
 | 
											
												
													
														|  |  						tu.InlineKeyboardButton(t.I18nBot("tgbot.buttons.confirmToggle")).WithCallbackData(t.encodeQuery("toggle_enable_c "+email)),
 |  |  						tu.InlineKeyboardButton(t.I18nBot("tgbot.buttons.confirmToggle")).WithCallbackData(t.encodeQuery("toggle_enable_c "+email)),
 | 
											
												
													
														|  |  					),
 |  |  					),
 | 
											
												
													
														|  |  				)
 |  |  				)
 | 
											
												
													
														|  | -				t.editMessageCallbackTgBot(chatId, callbackQuery.Message.MessageID, inlineKeyboard)
 |  | 
 | 
											
												
													
														|  | 
 |  | +				t.editMessageCallbackTgBot(chatId, callbackQuery.Message.GetMessageID(), inlineKeyboard)
 | 
											
												
													
														|  |  			case "toggle_enable_c":
 |  |  			case "toggle_enable_c":
 | 
											
												
													
														|  |  				enabled, err := t.inboundService.ToggleClientEnableByEmail(email)
 |  |  				enabled, err := t.inboundService.ToggleClientEnableByEmail(email)
 | 
											
												
													
														|  |  				if err == nil {
 |  |  				if err == nil {
 | 
											
										
											
												
													
														|  | @@ -738,7 +742,7 @@ func (t *Tgbot) asnwerCallback(callbackQuery *telego.CallbackQuery, isAdmin bool
 | 
											
												
													
														|  |  					} else {
 |  |  					} else {
 | 
											
												
													
														|  |  						t.sendCallbackAnswerTgBot(callbackQuery.ID, t.I18nBot("tgbot.answers.disableSuccess", "Email=="+email))
 |  |  						t.sendCallbackAnswerTgBot(callbackQuery.ID, t.I18nBot("tgbot.answers.disableSuccess", "Email=="+email))
 | 
											
												
													
														|  |  					}
 |  |  					}
 | 
											
												
													
														|  | -					t.searchClient(chatId, email, callbackQuery.Message.MessageID)
 |  | 
 | 
											
												
													
														|  | 
 |  | +					t.searchClient(chatId, email, callbackQuery.Message.GetMessageID())
 | 
											
												
													
														|  |  				} else {
 |  |  				} else {
 | 
											
												
													
														|  |  					t.sendCallbackAnswerTgBot(callbackQuery.ID, t.I18nBot("tgbot.answers.errorOperation"))
 |  |  					t.sendCallbackAnswerTgBot(callbackQuery.ID, t.I18nBot("tgbot.answers.errorOperation"))
 | 
											
												
													
														|  |  				}
 |  |  				}
 | 
											
										
											
												
													
														|  | @@ -774,7 +778,7 @@ func (t *Tgbot) asnwerCallback(callbackQuery *telego.CallbackQuery, isAdmin bool
 | 
											
												
													
														|  |  		t.onlineClients(chatId)
 |  |  		t.onlineClients(chatId)
 | 
											
												
													
														|  |  	case "onlines_refresh":
 |  |  	case "onlines_refresh":
 | 
											
												
													
														|  |  		t.sendCallbackAnswerTgBot(callbackQuery.ID, t.I18nBot("tgbot.answers.successfulOperation"))
 |  |  		t.sendCallbackAnswerTgBot(callbackQuery.ID, t.I18nBot("tgbot.answers.successfulOperation"))
 | 
											
												
													
														|  | -		t.onlineClients(chatId, callbackQuery.Message.MessageID)
 |  | 
 | 
											
												
													
														|  | 
 |  | +		t.onlineClients(chatId, callbackQuery.Message.GetMessageID())
 | 
											
												
													
														|  |  	case "commands":
 |  |  	case "commands":
 | 
											
												
													
														|  |  		t.sendCallbackAnswerTgBot(callbackQuery.ID, t.I18nBot("tgbot.buttons.commands"))
 |  |  		t.sendCallbackAnswerTgBot(callbackQuery.ID, t.I18nBot("tgbot.buttons.commands"))
 | 
											
												
													
														|  |  		t.SendMsgToTgbot(chatId, t.I18nBot("tgbot.commands.helpAdminCommands"))
 |  |  		t.SendMsgToTgbot(chatId, t.I18nBot("tgbot.commands.helpAdminCommands"))
 | 
											
										
											
												
													
														|  | @@ -1215,13 +1219,13 @@ func (t *Tgbot) clientTelegramUserInfo(chatId int64, email string, messageID ...
 | 
											
												
													
														|  |  		t.editMessageTgBot(chatId, messageID[0], output, inlineKeyboard)
 |  |  		t.editMessageTgBot(chatId, messageID[0], output, inlineKeyboard)
 | 
											
												
													
														|  |  	} else {
 |  |  	} else {
 | 
											
												
													
														|  |  		t.SendMsgToTgbot(chatId, output, inlineKeyboard)
 |  |  		t.SendMsgToTgbot(chatId, output, inlineKeyboard)
 | 
											
												
													
														|  | -		requestUser := telego.KeyboardButtonRequestUser{
 |  | 
 | 
											
												
													
														|  | 
 |  | +		requestUser := telego.KeyboardButtonRequestUsers{
 | 
											
												
													
														|  |  			RequestID: int32(traffic.Id),
 |  |  			RequestID: int32(traffic.Id),
 | 
											
												
													
														|  |  			UserIsBot: new(bool),
 |  |  			UserIsBot: new(bool),
 | 
											
												
													
														|  |  		}
 |  |  		}
 | 
											
												
													
														|  |  		keyboard := tu.Keyboard(
 |  |  		keyboard := tu.Keyboard(
 | 
											
												
													
														|  |  			tu.KeyboardRow(
 |  |  			tu.KeyboardRow(
 | 
											
												
													
														|  | -				tu.KeyboardButton(t.I18nBot("tgbot.buttons.selectTGUser")).WithRequestUser(&requestUser),
 |  | 
 | 
											
												
													
														|  | 
 |  | +				tu.KeyboardButton(t.I18nBot("tgbot.buttons.selectTGUser")).WithRequestUsers(&requestUser),
 | 
											
												
													
														|  |  			),
 |  |  			),
 | 
											
												
													
														|  |  			tu.KeyboardRow(
 |  |  			tu.KeyboardRow(
 | 
											
												
													
														|  |  				tu.KeyboardButton(t.I18nBot("tgbot.buttons.closeKeyboard")),
 |  |  				tu.KeyboardButton(t.I18nBot("tgbot.buttons.closeKeyboard")),
 |