From 7eb62855ac27195b696cc43cfb500242a3d382cb Mon Sep 17 00:00:00 2001
From: nistootsin <104831639+nistootsin@users.noreply.github.com>
Date: Sat, 15 Mar 2025 02:36:38 +0330
Subject: [PATCH 1/7] Add feature to add clients to inbound: - Implement
 buttons for adding new clients - Handle client addition process (submission
 remains to be completed) - Support for multiple languages

---
 web/service/tgbot.go                 | 303 ++++++++++++++++++++++-----
 web/translation/translate.en_US.toml |  16 ++
 web/translation/translate.es_ES.toml |  16 ++
 web/translation/translate.fa_IR.toml |  16 ++
 web/translation/translate.id_ID.toml |  17 ++
 web/translation/translate.ja_JP.toml |  16 ++
 web/translation/translate.pt_BR.toml |  16 ++
 web/translation/translate.ru_RU.toml |  16 ++
 web/translation/translate.tr_TR.toml |  16 ++
 web/translation/translate.uk_UA.toml |  16 ++
 web/translation/translate.vi_VN.toml |  16 ++
 web/translation/translate.zh_CN.toml |  16 ++
 web/translation/translate.zh_TW.toml |  16 ++
 13 files changed, 446 insertions(+), 50 deletions(-)

diff --git a/web/service/tgbot.go b/web/service/tgbot.go
index 9e217124..5189dc13 100644
--- a/web/service/tgbot.go
+++ b/web/service/tgbot.go
@@ -1,6 +1,8 @@
 package service
 
 import (
+	"crypto/rand"
+	"math/big"
 	"embed"
 	"errors"
 	"fmt"
@@ -20,8 +22,7 @@ import (
 	"x-ui/web/locale"
 	"x-ui/xray"
 
-	"slices"
-
+	"github.com/google/uuid"
 	"github.com/mymmrac/telego"
 	th "github.com/mymmrac/telego/telegohandler"
 	tu "github.com/mymmrac/telego/telegoutil"
@@ -30,14 +31,33 @@ import (
 )
 
 var (
-	bot         *telego.Bot
-	botHandler  *th.BotHandler
-	adminIds    []int64
-	isRunning   bool
-	hostname    string
-	hashStorage *global.HashStorage
+	bot         	*telego.Bot
+	botHandler  	*th.BotHandler
+	adminIds    	[]int64
+	isRunning   	bool
+	hostname    	string
+	hashStorage 	*global.HashStorage
+	handler 		*th.Handler
+
+	// clients data to adding new client
+	receiver_inbound_ID		  int
+	client_Id         string 
+	client_Flow       string
+	client_Email      string
+	client_LimitIP    int   
+	client_TotalGB    int64  
+	client_ExpiryTime int64  
+	client_Enable     bool   
+	client_TgID       string 
+	client_SubID      string
+	client_Comment    string 
+	client_Reset      int    
 )
 
+
+var userStates = make(map[int64]string)
+
+
 type LoginStatus byte
 
 const (
@@ -46,6 +66,8 @@ const (
 	EmptyTelegramUserID             = int64(0)
 )
 
+const charset = "abcdefghijklmnopqrstuvwxyz0123456789"
+
 type Tgbot struct {
 	inboundService InboundService
 	settingService SettingService
@@ -54,6 +76,7 @@ type Tgbot struct {
 	lastStatus     *Status
 }
 
+
 func (t *Tgbot) NewTgbot() *Tgbot {
 	return new(Tgbot)
 }
@@ -223,36 +246,83 @@ func (t *Tgbot) OnReceive() {
 	botHandler, _ = th.NewBotHandler(bot, updates)
 
 	botHandler.HandleMessage(func(_ *telego.Bot, message telego.Message) {
+		delete(userStates, message.Chat.ID)
 		t.SendMsgToTgbot(message.Chat.ID, t.I18nBot("tgbot.keyboardClosed"), tu.ReplyKeyboardRemove())
 	}, th.TextEqual(t.I18nBot("tgbot.buttons.closeKeyboard")))
 
 	botHandler.HandleMessage(func(_ *telego.Bot, message telego.Message) {
+		delete(userStates, message.Chat.ID)
 		t.answerCommand(&message, message.Chat.ID, checkAdmin(message.From.ID))
 	}, th.AnyCommand())
 
 	botHandler.HandleCallbackQuery(func(_ *telego.Bot, query telego.CallbackQuery) {
+		delete(userStates,query.Message.GetChat().ID)
 		t.answerCallback(&query, checkAdmin(query.From.ID))
 	}, th.AnyCallbackQueryWithMessage())
 
 	botHandler.HandleMessage(func(_ *telego.Bot, message telego.Message) {
-		if message.UsersShared != nil {
-			if checkAdmin(message.From.ID) {
-				for _, sharedUser := range message.UsersShared.Users {
-					userID := sharedUser.UserID
-					needRestart, err := t.inboundService.SetClientTelegramUserID(message.UsersShared.RequestID, userID)
-					if needRestart {
-						t.xrayService.SetToNeedRestart()
+		if userState, exists := userStates[message.Chat.ID]; exists {
+			switch userState {
+			case "awaiting_id":
+				client_Id = message.Text
+				userStates[message.Chat.ID] = "awaiting_email" 
+				t.SendMsgToTgbot(message.Chat.ID, t.I18nBot("tgbot.messages.received_id", "ClientId=="+client_Id), tu.ReplyKeyboardRemove())
+				cancel_btn_markup := tu.InlineKeyboard(
+					tu.InlineKeyboardRow(
+						tu.InlineKeyboardButton(t.I18nBot("tgbot.buttons.use_default")).WithCallbackData("default_client_email"),
+						tu.InlineKeyboardButton(t.I18nBot("tgbot.buttons.cancel")).WithCallbackData("add_client_cancel"),
+					),
+				)
+				t.SendMsgToTgbot(message.Chat.ID, t.I18nBot("tgbot.messages.email_prompt", "ClientEmail=="+client_Email), cancel_btn_markup)
+			case "awaiting_email":
+				client_Email = message.Text
+				userStates[message.Chat.ID] = "awaiting_comment" 
+				t.SendMsgToTgbot(message.Chat.ID, t.I18nBot("tgbot.messages.received_email", "ClientEmail=="+client_Email), tu.ReplyKeyboardRemove())
+				cancel_btn_markup := tu.InlineKeyboard(
+				tu.InlineKeyboardRow(
+					tu.InlineKeyboardButton(t.I18nBot("tgbot.buttons.use_default")).WithCallbackData("default_client_comment"),
+					tu.InlineKeyboardButton(t.I18nBot("tgbot.buttons.cancel")).WithCallbackData("add_client_cancel"),
+					),
+				)
+				t.SendMsgToTgbot(message.Chat.ID, t.I18nBot("tgbot.messages.comment_prompt", "ClientComment=="+client_Comment), cancel_btn_markup)
+			case "awaiting_comment":
+				client_Comment = message.Text
+				t.SendMsgToTgbot(message.Chat.ID, t.I18nBot("tgbot.messages.received_comment", "ClientComment=="+client_Comment), tu.ReplyKeyboardRemove())
+				message_text := t.I18nBot("tgbot.messages.client_data", "ClientId=="+client_Id,"ClientEmail=="+client_Email,"ClientComment=="+client_Comment)
+
+				inlineKeyboard := tu.InlineKeyboard(
+					tu.InlineKeyboardRow(
+						tu.InlineKeyboardButton(t.I18nBot("tgbot.buttons.submitEnable")).WithCallbackData("add_client_submit_enable"),
+						tu.InlineKeyboardButton(t.I18nBot("tgbot.buttons.submitDisable")).WithCallbackData("add_client_submit_disable"),
+					),
+					tu.InlineKeyboardRow(
+						tu.InlineKeyboardButton(t.I18nBot("tgbot.buttons.cancel")).WithCallbackData("add_client_cancel"),
+					),
+				)
+				t.SendMsgToTgbot(message.Chat.ID, message_text, inlineKeyboard)
+				delete(userStates, message.Chat.ID)
+			}
+
+		} else {
+			if message.UsersShared != nil {
+				if checkAdmin(message.From.ID) {
+					for _, sharedUser := range message.UsersShared.Users {
+						userID := sharedUser.UserID
+						needRestart, err := t.inboundService.SetClientTelegramUserID(message.UsersShared.RequestID, userID)
+						if needRestart {
+							t.xrayService.SetToNeedRestart()
+						}
+						output := ""
+						if err != nil {
+							output += t.I18nBot("tgbot.messages.selectUserFailed")
+						} else {
+							output += t.I18nBot("tgbot.messages.userSaved")
+						}
+						t.SendMsgToTgbot(message.Chat.ID, output, tu.ReplyKeyboardRemove())
 					}
-					output := ""
-					if err != nil {
-						output += t.I18nBot("tgbot.messages.selectUserFailed")
-					} else {
-						output += t.I18nBot("tgbot.messages.userSaved")
-					}
-					t.SendMsgToTgbot(message.Chat.ID, output, tu.ReplyKeyboardRemove())
+				} else {
+					t.SendMsgToTgbot(message.Chat.ID, t.I18nBot("tgbot.noResult"), tu.ReplyKeyboardRemove())
 				}
-			} else {
-				t.SendMsgToTgbot(message.Chat.ID, t.I18nBot("tgbot.noResult"), tu.ReplyKeyboardRemove())
 			}
 		}
 	}, th.AnyMessage())
@@ -344,6 +414,16 @@ func (t *Tgbot) sendResponse(chatId int64, msg string, onlyMessage, isAdmin bool
 	}
 }
 
+
+func (t *Tgbot) randomLowerAndNum(length int) string {
+	bytes := make([]byte, length)
+	for i := range bytes {
+		randomIndex, _ := rand.Int(rand.Reader, big.NewInt(int64(len(charset))))
+		bytes[i] = charset[randomIndex.Int64()]
+	}
+	return string(bytes)
+}
+
 func (t *Tgbot) answerCallback(callbackQuery *telego.CallbackQuery, isAdmin bool) {
 	chatId := callbackQuery.Message.GetChat().ID
 
@@ -838,7 +918,23 @@ func (t *Tgbot) answerCallback(callbackQuery *telego.CallbackQuery, isAdmin bool
 					return
 				}
 				t.SendMsgToTgbot(chatId, t.I18nBot("tgbot.answers.chooseClient", "Inbound=="+inbound.Remark), clients)
-
+			case "add_client_to":
+				inboundId := dataArray[1]
+				inboundIdInt, err := strconv.Atoi(inboundId)
+				if err != nil {
+					t.sendCallbackAnswerTgBot(callbackQuery.ID, err.Error())
+					return
+				}
+				receiver_inbound_ID = inboundIdInt
+				inbound, err := t.inboundService.GetInbound(inboundIdInt)
+				if err != nil {
+					t.sendCallbackAnswerTgBot(callbackQuery.ID, err.Error())
+					return
+				}
+				
+				message := t.I18nBot("tgbot.messages.inbound_client_data", "InboundRemark=="+inbound.Remark,"ClientId=="+client_Id,"ClientEmail=="+client_Email,"ClientComment=="+client_Comment)
+				
+				t.addClient(chatId, message)
 			}
 			return
 		} else {
@@ -892,11 +988,82 @@ func (t *Tgbot) answerCallback(callbackQuery *telego.CallbackQuery, isAdmin bool
 	case "commands":
 		t.sendCallbackAnswerTgBot(callbackQuery.ID, t.I18nBot("tgbot.buttons.commands"))
 		t.SendMsgToTgbot(chatId, t.I18nBot("tgbot.commands.helpAdminCommands"))
+	case "add_client":
+		// assign default values to clients variables
+		client_Id =  uuid.New().String() // button
+		client_Flow = ""
+		client_Email = t.randomLowerAndNum(8) // button
+		client_LimitIP = 0
+		client_TotalGB = 0
+		client_ExpiryTime = 0
+		client_Enable = true // button
+		client_TgID = ""
+		client_SubID = t.randomLowerAndNum(16)
+		client_Comment = "" // button
+		client_Reset = 0 // button
+
+		inbounds, err := t.getInboundsAddClient()
+		if err != nil {
+			t.sendCallbackAnswerTgBot(callbackQuery.ID, err.Error())
+			return
+		}
+		t.sendCallbackAnswerTgBot(callbackQuery.ID, t.I18nBot("tgbot.buttons.addClient"))
+		t.SendMsgToTgbot(chatId, t.I18nBot("tgbot.answers.chooseInbound"), inbounds)
+	case "add_client_ch_default":
+		cancel_btn_markup := tu.InlineKeyboard(
+			tu.InlineKeyboardRow(
+				tu.InlineKeyboardButton(t.I18nBot("tgbot.buttons.use_default")).WithCallbackData("default_client_id"),
+				tu.InlineKeyboardButton(t.I18nBot("tgbot.buttons.cancel")).WithCallbackData("add_client_cancel"),
+			),
+		)
+		t.SendMsgToTgbot(chatId, t.I18nBot("tgbot.messages.id_prompt", "ClientId=="+client_Id),cancel_btn_markup)
+		userStates[chatId] = "awaiting_id"
+	case "default_client_id":
+		cancel_btn_markup := tu.InlineKeyboard(
+			tu.InlineKeyboardRow(
+				tu.InlineKeyboardButton(t.I18nBot("tgbot.buttons.use_default")).WithCallbackData("default_client_email"),
+				tu.InlineKeyboardButton(t.I18nBot("tgbot.buttons.cancel")).WithCallbackData("add_client_cancel"),
+			),
+		)
+		t.SendMsgToTgbot(chatId, t.I18nBot("tgbot.messages.email_prompt", "ClientEmail=="+client_Email),cancel_btn_markup)
+		userStates[chatId] = "awaiting_email"
+	case "default_client_email":
+		inlineKeyboard := tu.InlineKeyboard(
+			tu.InlineKeyboardRow(
+				tu.InlineKeyboardButton(t.I18nBot("tgbot.buttons.use_default")).WithCallbackData("default_client_comment"),
+				tu.InlineKeyboardButton(t.I18nBot("tgbot.buttons.cancel")).WithCallbackData("add_client_cancel"),
+				),
+		)
+		t.SendMsgToTgbot(chatId, t.I18nBot("tgbot.messages.comment_prompt", "ClientComment=="+client_Comment),inlineKeyboard)
+		userStates[chatId] = "awaiting_comment"
+	case "default_client_comment":
+		message_text := t.I18nBot("tgbot.messages.client_data", "ClientId=="+client_Id,"ClientEmail=="+client_Email,"ClientComment=="+client_Comment)
+
+		inlineKeyboard := tu.InlineKeyboard(
+			tu.InlineKeyboardRow(
+				tu.InlineKeyboardButton(t.I18nBot("tgbot.buttons.submitEnable")).WithCallbackData("add_client_submit_enable"),
+				tu.InlineKeyboardButton(t.I18nBot("tgbot.buttons.submitDisable")).WithCallbackData("add_client_submit_disable"),
+			),
+			tu.InlineKeyboardRow(
+				tu.InlineKeyboardButton(t.I18nBot("tgbot.buttons.cancel")).WithCallbackData("add_client_cancel"),
+			),
+		)
+
+		t.SendMsgToTgbot(chatId, message_text, inlineKeyboard)
+		delete(userStates, chatId)
+	case "add_client_cancel":
+		delete(userStates, chatId)
+		t.SendMsgToTgbot(chatId, t.I18nBot("tgbot.messages.cancel"), tu.ReplyKeyboardRemove())
 	}
 }
 
 func checkAdmin(tgId int64) bool {
-	return slices.Contains(adminIds, tgId)
+	for _, adminId := range adminIds {
+		if adminId == tgId {
+			return true
+		}
+	}
+	return false
 }
 
 func (t *Tgbot) SendAnswer(chatId int64, msg string, isAdmin bool) {
@@ -915,7 +1082,10 @@ func (t *Tgbot) SendAnswer(chatId int64, msg string, isAdmin bool) {
 		tu.InlineKeyboardRow(
 			tu.InlineKeyboardButton(t.I18nBot("tgbot.buttons.commands")).WithCallbackData(t.encodeQuery("commands")),
 			tu.InlineKeyboardButton(t.I18nBot("tgbot.buttons.onlines")).WithCallbackData(t.encodeQuery("onlines")),
+		),
+		tu.InlineKeyboardRow(
 			tu.InlineKeyboardButton(t.I18nBot("tgbot.buttons.allClients")).WithCallbackData(t.encodeQuery("get_inbounds")),
+			tu.InlineKeyboardButton(t.I18nBot("tgbot.buttons.addClient")).WithCallbackData(t.encodeQuery("add_client")),
 		),
 		// TODOOOOOOOOOOOOOO: Add restart button here.
 	)
@@ -1161,39 +1331,45 @@ func (t *Tgbot) getInboundUsages() string {
 	}
 	return info
 }
-
-func (t *Tgbot) getInbounds() (*telego.InlineKeyboardMarkup, error) {
+func (t *Tgbot) getInboundsKeyboard(action string) (*telego.InlineKeyboardMarkup, error) {
 	inbounds, err := t.inboundService.GetAllInbounds()
-	var buttons []telego.InlineKeyboardButton
-
 	if err != nil {
 		logger.Warning("GetAllInbounds run failed:", err)
 		return nil, errors.New(t.I18nBot("tgbot.answers.getInboundsFailed"))
-	} else {
-		if len(inbounds) > 0 {
-			for _, inbound := range inbounds {
-				status := "❌"
-				if inbound.Enable {
-					status = "✅"
-				}
-				buttons = append(buttons, tu.InlineKeyboardButton(fmt.Sprintf("%v - %v", inbound.Remark, status)).WithCallbackData(t.encodeQuery("get_clients "+strconv.Itoa(inbound.Id))))
-			}
-		} else {
-			logger.Warning("GetAllInbounds run failed:", err)
-			return nil, errors.New(t.I18nBot("tgbot.answers.getInboundsFailed"))
-		}
-
 	}
-	cols := 0
-	if len(buttons) < 6 {
-		cols = 3
-	} else {
+
+	if len(inbounds) == 0 {
+		logger.Warning("No inbounds found")
+		return nil, errors.New(t.I18nBot("tgbot.answers.getInboundsFailed"))
+	}
+
+	var buttons []telego.InlineKeyboardButton
+	for _, inbound := range inbounds {
+		status := "❌"
+		if inbound.Enable {
+			status = "✅"
+		}
+		callbackData := t.encodeQuery(fmt.Sprintf("%s %d", action, inbound.Id))
+		buttons = append(buttons, tu.InlineKeyboardButton(fmt.Sprintf("%v - %v", inbound.Remark, status)).WithCallbackData(callbackData))
+	}
+
+	cols := 3
+	if len(buttons) >= 6 {
 		cols = 2
 	}
+
 	keyboard := tu.InlineKeyboardGrid(tu.InlineKeyboardCols(cols, buttons...))
 	return keyboard, nil
 }
 
+func (t *Tgbot) getInbounds() (*telego.InlineKeyboardMarkup, error) {
+	return t.getInboundsKeyboard("get_clients")
+}
+
+func (t *Tgbot) getInboundsAddClient() (*telego.InlineKeyboardMarkup, error) {
+	return t.getInboundsKeyboard("add_client_to")
+}
+
 func (t *Tgbot) getInboundClients(id int) (*telego.InlineKeyboardMarkup, error) {
 	inbound, err := t.inboundService.GetInbound(id)
 	if err != nil {
@@ -1484,6 +1660,28 @@ func (t *Tgbot) searchClient(chatId int64, email string, messageID ...int) {
 	}
 }
 
+
+func (t *Tgbot) addClient(chatId int64, msg string, messageID ...int) {
+	
+	inlineKeyboard := tu.InlineKeyboard(
+		tu.InlineKeyboardRow(
+			tu.InlineKeyboardButton(t.I18nBot("tgbot.buttons.change_default")).WithCallbackData("add_client_ch_default"),
+		),
+		tu.InlineKeyboardRow(
+			tu.InlineKeyboardButton(t.I18nBot("tgbot.buttons.submitEnable")).WithCallbackData("add_client_submit_enable"),
+			tu.InlineKeyboardButton(t.I18nBot("tgbot.buttons.submitDisable")).WithCallbackData("add_client_submit_disable"),
+		),
+		tu.InlineKeyboardRow(
+			tu.InlineKeyboardButton(t.I18nBot("tgbot.buttons.cancel")).WithCallbackData("add_client_cancel"),
+		),
+	)
+	if len(messageID) > 0 {
+		t.editMessageTgBot(chatId, messageID[0], msg, inlineKeyboard)
+	} else {
+		t.SendMsgToTgbot(chatId, msg, inlineKeyboard)
+	}
+}
+
 func (t *Tgbot) searchInbound(chatId int64, remark string) {
 	inbounds, err := t.inboundService.SearchInbounds(remark)
 	if err != nil {
@@ -1689,7 +1887,12 @@ func (t *Tgbot) notifyExhausted() {
 }
 
 func int64Contains(slice []int64, item int64) bool {
-	return slices.Contains(slice, item)
+	for _, s := range slice {
+		if s == item {
+			return true
+		}
+	}
+	return false
 }
 
 func (t *Tgbot) onlineClients(chatId int64, messageID ...int) {
@@ -1848,4 +2051,4 @@ func (t *Tgbot) editMessageTgBot(chatId int64, messageID int, text string, inlin
 	if _, err := bot.EditMessageText(&params); err != nil {
 		logger.Warning(err)
 	}
-}
+}
\ No newline at end of file
diff --git a/web/translation/translate.en_US.toml b/web/translation/translate.en_US.toml
index f06e2cad..96b6b8a9 100644
--- a/web/translation/translate.en_US.toml
+++ b/web/translation/translate.en_US.toml
@@ -572,6 +572,16 @@
 "yes" = "✅ Yes"
 "no" = "❌ No"
 
+"received_id" = "🔑📥 Received ID: {{ .ClientId }}"
+"received_email" = "📧📥 Received Email: {{ .ClientEmail }}"
+"received_comment" = "💬📥 Received Comment: {{ .ClientComment }}"
+"id_prompt" = "🔑 Default ID: {{ .ClientId }}\n\nEnter your id."
+"email_prompt" = "📧 Default Email: {{ .ClientEmail }}\n\nEnter your email."
+"comment_prompt" = "💬 Default Comment: {{ .ClientComment }}\n\nEnter your Comment."
+"inbound_client_data" = "🔄 Inbound: {{ .InboundRemark }}\n\n🔑 ID: {{ .ClientId }}\n📧 Email: {{ .ClientEmail }}\n💬 Comment: {{ .ClientComment }}\n\nYou can add the client to inbound now!"
+"client_data" = "🔑 ID: {{ .ClientId }}\n📧 Email: {{ .ClientEmail }}\n💬 Comment: {{ .ClientComment }}\n\nYou can add the client to inbound now!"
+"cancel" = "❌ Process Canceled! \n\nYou can /start again anytime. 🔄"
+
 [tgbot.buttons]
 "closeKeyboard" = "❌ Close Keyboard"
 "cancel" = "❌ Cancel"
@@ -606,6 +616,12 @@
 "getBanLogs" = "Get Ban Logs"
 "allClients" = "All Clients"
 
+"addClient" = "Add Client"
+"submitEnable" = "Submit As Enable ✅"
+"submitDisable" = "Submit As Disable 🚫"
+"use_default" = "🏷️ Use default"
+"change_default" = "🔄⚙️ Change Default"
+
 [tgbot.answers]
 "successfulOperation" = "✅ Operation successful!"
 "errorOperation" = "❗ Error in operation."
diff --git a/web/translation/translate.es_ES.toml b/web/translation/translate.es_ES.toml
index 81ba9c20..b9081d90 100644
--- a/web/translation/translate.es_ES.toml
+++ b/web/translation/translate.es_ES.toml
@@ -572,6 +572,16 @@
 "yes" = "✅ Sí"
 "no" = "❌ No"
 
+"received_id" = "🔑📥 ID recibido: {{ .ClientId }}"
+"received_email" = "📧📥 Correo recibido: {{ .ClientEmail }}"
+"received_comment" = "💬📥 Comentario recibido: {{ .ClientComment }}"
+"id_prompt" = "🔑 ID predeterminado: {{ .ClientId }}\n\nIntroduce tu ID."
+"email_prompt" = "📧 Correo predeterminado: {{ .ClientEmail }}\n\nIntroduce tu correo."
+"comment_prompt" = "💬 Comentario predeterminado: {{ .ClientComment }}\n\nIntroduce tu comentario."
+"inbound_client_data" = "🔄 Entrada: {{ .InboundRemark }}\n\n🔑 ID: {{ .ClientId }}\n📧 Correo: {{ .ClientEmail }}\n💬 Comentario: {{ .ClientComment }}\n\n¡Puedes añadir el cliente a la entrada ahora!"
+"client_data" = "🔑 ID: {{ .ClientId }}\n📧 Correo: {{ .ClientEmail }}\n💬 Comentario: {{ .ClientComment }}\n\n¡Puedes añadir el cliente a la entrada ahora!"
+"cancel" = "❌ ¡Proceso cancelado! \n\nPuedes /start de nuevo en cualquier momento. 🔄"
+
 [tgbot.buttons]
 "closeKeyboard" = "❌ Cerrar Teclado"
 "cancel" = "❌ Cancelar"
@@ -606,6 +616,12 @@
 "getBanLogs" = "Registros de prohibición"
 "allClients" = "Todos los Clientes"
 
+"addClient" = "Añadir Cliente"
+"submitEnable" = "Enviar como Habilitado ✅"
+"submitDisable" = "Enviar como Deshabilitado 🚫"
+"use_default" = "🏷️ Usar por defecto"
+"change_default" = "🔄⚙️ Cambiar por defecto"
+
 [tgbot.answers]
 "successfulOperation" = "✅ ¡Exitosa!"
 "errorOperation" = "❗ Error en la Operación."
diff --git a/web/translation/translate.fa_IR.toml b/web/translation/translate.fa_IR.toml
index a50bf960..75057f07 100644
--- a/web/translation/translate.fa_IR.toml
+++ b/web/translation/translate.fa_IR.toml
@@ -572,6 +572,16 @@
 "yes" = "✅ بله"
 "no" = "❌ خیر"
 
+"received_id" = "🔑📥 شناسه دریافت شده: {{ .ClientId }}"
+"received_email" = "📧📥 ایمیل دریافت شده: {{ .ClientEmail }}"
+"received_comment" = "💬📥 کامنت دریافت شده: {{ .ClientComment }}"
+"id_prompt" = "🔑 شناسه پیش‌فرض: {{ .ClientId }}\n\nشناسه خود را وارد کنید."
+"email_prompt" = "📧 ایمیل پیش‌فرض: {{ .ClientEmail }}\n\nایمیل خود را وارد کنید."
+"comment_prompt" = "💬 کامنت پیش‌فرض: {{ .ClientComment }}\n\nکامنت خود را وارد کنید."
+"inbound_client_data" = "🔄 ورودی: {{ .InboundRemark }}\n\n🔑 شناسه: {{ .ClientId }}\n📧 ایمیل: {{ .ClientEmail }}\n💬 کامنت: {{ .ClientComment }}\n\nهم‌اکنون می‌توانید مشتری را به ورودی اضافه کنید!"
+"client_data" = "🔑 شناسه: {{ .ClientId }}\n📧 ایمیل: {{ .ClientEmail }}\n💬 کامنت: {{ .ClientComment }}\n\nهم‌اکنون می‌توانید مشتری را به ورودی اضافه کنید!"
+"cancel" = "❌ فرآیند لغو شد! \n\nشما می‌توانید هر زمان دوباره /start کنید. 🔄"
+
 [tgbot.buttons]
 "closeKeyboard" = "❌ بستن کیبورد"
 "cancel" = "❌ لغو"
@@ -606,6 +616,12 @@
 "getBanLogs" = "گزارش های بلوک را دریافت کنید"
 "allClients" = "همه مشتریان"
 
+"addClient" = "افزودن مشتری"
+"submitEnable" = "ارسال به عنوان فعال ✅"
+"submitDisable" = "ارسال به عنوان غیرفعال 🚫"
+"use_default" = "🏷️ استفاده از پیش‌فرض"
+"change_default" = "🔄⚙️ تغییر پیش‌فرض"
+
 [tgbot.answers]
 "successfulOperation" = "✅ انجام شد!"
 "errorOperation" = "❗ خطا در عملیات."
diff --git a/web/translation/translate.id_ID.toml b/web/translation/translate.id_ID.toml
index 95222495..84e8fb22 100644
--- a/web/translation/translate.id_ID.toml
+++ b/web/translation/translate.id_ID.toml
@@ -571,6 +571,17 @@
 "yes" = "✅ Ya"
 "no" = "❌ Tidak"
 
+
+"received_id" = "🔑📥 ID diterima: {{ .ClientId }}"
+"received_email" = "📧📥 Email diterima: {{ .ClientEmail }}"
+"received_comment" = "💬📥 Komentar diterima: {{ .ClientComment }}"
+"id_prompt" = "🔑 ID default: {{ .ClientId }}\n\nMasukkan ID Anda."
+"email_prompt" = "📧 Email default: {{ .ClientEmail }}\n\nMasukkan email Anda."
+"comment_prompt" = "💬 Komentar default: {{ .ClientComment }}\n\nMasukkan komentar Anda."
+"inbound_client_data" = "🔄 Masuk: {{ .InboundRemark }}\n\n🔑 ID: {{ .ClientId }}\n📧 Email: {{ .ClientEmail }}\n💬 Komentar: {{ .ClientComment }}\n\nSekarang Anda bisa menambahkan klien ke inbound!"
+"client_data" = "🔑 ID: {{ .ClientId }}\n📧 Email: {{ .ClientEmail }}\n💬 Komentar: {{ .ClientComment }}\n\nSekarang Anda bisa menambahkan klien ke inbound!"
+"cancel" = "❌ Proses dibatalkan! \n\nAnda bisa /start lagi kapan saja. 🔄"
+
 [tgbot.buttons]
 "closeKeyboard" = "❌ Tutup Papan Ketik"
 "cancel" = "❌ Batal"
@@ -605,6 +616,12 @@
 "getBanLogs" = "Dapatkan Log Pemblokiran"
 "allClients" = "Semua Klien"
 
+"addClient" = "Tambah Klien"
+"submitEnable" = "Kirim Sebagai Aktif ✅"
+"submitDisable" = "Kirim Sebagai Nonaktif 🚫"
+"use_default" = "🏷️ Gunakan Default"
+"change_default" = "🔄⚙️ Ubah Default"
+
 [tgbot.answers]
 "successfulOperation" = "✅ Operasi berhasil!"
 "errorOperation" = "❗ Kesalahan dalam operasi."
diff --git a/web/translation/translate.ja_JP.toml b/web/translation/translate.ja_JP.toml
index 1b116564..102ea429 100644
--- a/web/translation/translate.ja_JP.toml
+++ b/web/translation/translate.ja_JP.toml
@@ -572,6 +572,16 @@
 "yes" = "✅ はい"
 "no" = "❌ いいえ"
 
+"received_id" = "🔑📥 受け取ったID: {{ .ClientId }}"
+"received_email" = "📧📥 受け取ったメール: {{ .ClientEmail }}"
+"received_comment" = "💬📥 受け取ったコメント: {{ .ClientComment }}"
+"id_prompt" = "🔑 デフォルトID: {{ .ClientId }}\n\nIDを入力してください。"
+"email_prompt" = "📧 デフォルトメール: {{ .ClientEmail }}\n\nメールアドレスを入力してください。"
+"comment_prompt" = "💬 デフォルトコメント: {{ .ClientComment }}\n\nコメントを入力してください。"
+"inbound_client_data" = "🔄 受信データ: {{ .InboundRemark }}\n\n🔑 ID: {{ .ClientId }}\n📧 メール: {{ .ClientEmail }}\n💬 コメント: {{ .ClientComment }}\n\nクライアントを受信リストに追加できます!"
+"client_data" = "🔑 ID: {{ .ClientId }}\n📧 メール: {{ .ClientEmail }}\n💬 コメント: {{ .ClientComment }}\n\nクライアントを受信リストに追加できます!"
+"cancel" = "❌ 処理がキャンセルされました! \n\nいつでも/startでやり直せます。 🔄"
+
 [tgbot.buttons]
 "closeKeyboard" = "❌ キーボードを閉じる"
 "cancel" = "❌ キャンセル"
@@ -606,6 +616,12 @@
 "getBanLogs" = "禁止ログ"
 "allClients" = "すべてのクライアント"
 
+"addClient" = "クライアントを追加"
+"submitEnable" = "有効として送信 ✅"
+"submitDisable" = "無効として送信 🚫"
+"use_default" = "🏷️ デフォルトを使用"
+"change_default" = "🔄⚙️ デフォルトを変更"
+
 [tgbot.answers]
 "successfulOperation" = "✅ 成功!"
 "errorOperation" = "❗ 操作エラー。"
diff --git a/web/translation/translate.pt_BR.toml b/web/translation/translate.pt_BR.toml
index 24b40474..f3a2bb9f 100644
--- a/web/translation/translate.pt_BR.toml
+++ b/web/translation/translate.pt_BR.toml
@@ -572,6 +572,16 @@
 "yes" = "✅ Sim"
 "no" = "❌ Não"
 
+"received_id" = "🔑📥 ID recebido: {{ .ClientId }}"
+"received_email" = "📧📥 E-mail recebido: {{ .ClientEmail }}"
+"received_comment" = "💬📥 Comentário recebido: {{ .ClientComment }}"
+"id_prompt" = "🔑 ID padrão: {{ .ClientId }}\n\nDigite seu ID."
+"email_prompt" = "📧 E-mail padrão: {{ .ClientEmail }}\n\nDigite seu e-mail."
+"comment_prompt" = "💬 Comentário padrão: {{ .ClientComment }}\n\nDigite seu comentário."
+"inbound_client_data" = "🔄 Entrada: {{ .InboundRemark }}\n\n🔑 ID: {{ .ClientId }}\n📧 E-mail: {{ .ClientEmail }}\n💬 Comentário: {{ .ClientComment }}\n\nVocê pode adicionar o cliente à entrada agora!"
+"client_data" = "🔑 ID: {{ .ClientId }}\n📧 E-mail: {{ .ClientEmail }}\n💬 Comentário: {{ .ClientComment }}\n\nVocê pode adicionar o cliente à entrada agora!"
+"cancel" = "❌ Processo cancelado! \n\nVocê pode /start novamente a qualquer momento. 🔄"
+
 [tgbot.buttons]
 "closeKeyboard" = "❌ Fechar teclado"
 "cancel" = "❌ Cancelar"
@@ -606,6 +616,12 @@
 "getBanLogs" = "Obter logs de banimento"
 "allClients" = "Todos os clientes"
 
+"addClient" = "Adicionar Cliente"
+"submitEnable" = "Enviar como Ativado ✅"
+"submitDisable" = "Enviar como Desativado 🚫"
+"use_default" = "🏷️ Usar padrão"
+"change_default" = "🔄⚙️ Alterar Padrão"
+
 [tgbot.answers]
 "successfulOperation" = "✅ Operação bem-sucedida!"
 "errorOperation" = "❗ Erro na operação."
diff --git a/web/translation/translate.ru_RU.toml b/web/translation/translate.ru_RU.toml
index 86150ff8..4cd2abe3 100644
--- a/web/translation/translate.ru_RU.toml
+++ b/web/translation/translate.ru_RU.toml
@@ -572,6 +572,16 @@
 "yes" = "✅ Да"
 "no" = "❌ Нет"
 
+"received_id" = "🔑📥 Полученный ID: {{ .ClientId }}"
+"received_email" = "📧📥 Полученный email: {{ .ClientEmail }}"
+"received_comment" = "💬📥 Полученный комментарий: {{ .ClientComment }}"
+"id_prompt" = "🔑 Стандартный ID: {{ .ClientId }}\n\nВведите ваш ID."
+"email_prompt" = "📧 Стандартный email: {{ .ClientEmail }}\n\nВведите ваш email."
+"comment_prompt" = "💬 Стандартный комментарий: {{ .ClientComment }}\n\nВведите ваш комментарий."
+"inbound_client_data" = "🔄 Входящие: {{ .InboundRemark }}\n\n🔑 ID: {{ .ClientId }}\n📧 Email: {{ .ClientEmail }}\n💬 Комментарий: {{ .ClientComment }}\n\nТеперь вы можете добавить клиента в входящие!"
+"client_data" = "🔑 ID: {{ .ClientId }}\n📧 Email: {{ .ClientEmail }}\n💬 Комментарий: {{ .ClientComment }}\n\nТеперь вы можете добавить клиента в входящие!"
+"cancel" = "❌ Процесс отменен! \n\nВы можете снова запустить /start в любое время. 🔄"
+
 [tgbot.buttons]
 "closeKeyboard" = "❌ Закрыть клавиатуру"
 "cancel" = "❌ Отмена"
@@ -606,6 +616,12 @@
 "getBanLogs" = "Логи блокировок"
 "allClients" = "Все клиенты"
 
+"addClient" = "Добавить клиента"
+"submitEnable" = "Отправить как включено ✅"
+"submitDisable" = "Отправить как отключено 🚫"
+"use_default" = "🏷️ Использовать по умолчанию"
+"change_default" = "🔄⚙️ Изменить по умолчанию"
+
 [tgbot.answers]
 "successfulOperation" = "✅ Успешно!"
 "errorOperation" = "❗ Ошибка в операции."
diff --git a/web/translation/translate.tr_TR.toml b/web/translation/translate.tr_TR.toml
index f033e440..e5ee0a95 100644
--- a/web/translation/translate.tr_TR.toml
+++ b/web/translation/translate.tr_TR.toml
@@ -572,6 +572,16 @@
 "yes" = "✅ Evet"
 "no" = "❌ Hayır"
 
+"received_id" = "🔑📥 Alınan ID: {{ .ClientId }}"
+"received_email" = "📧📥 Alınan E-posta: {{ .ClientEmail }}"
+"received_comment" = "💬📥 Alınan Yorum: {{ .ClientComment }}"
+"id_prompt" = "🔑 Varsayılan ID: {{ .ClientId }}\n\nID'nizi girin."
+"email_prompt" = "📧 Varsayılan E-posta: {{ .ClientEmail }}\n\nE-posta adresinizi girin."
+"comment_prompt" = "💬 Varsayılan Yorum: {{ .ClientComment }}\n\nYorumunuzu girin."
+"inbound_client_data" = "🔄 Giriş: {{ .InboundRemark }}\n\n🔑 ID: {{ .ClientId }}\n📧 E-posta: {{ .ClientEmail }}\n💬 Yorum: {{ .ClientComment }}\n\nŞimdi müşteri girişine ekleyebilirsiniz!"
+"client_data" = "🔑 ID: {{ .ClientId }}\n📧 E-posta: {{ .ClientEmail }}\n💬 Yorum: {{ .ClientComment }}\n\nŞimdi müşteri girişine ekleyebilirsiniz!"
+"cancel" = "❌ İşlem iptal edildi! \n\nİstediğiniz zaman /start komutunu tekrar verebilirsiniz. 🔄"
+
 [tgbot.buttons]
 "closeKeyboard" = "❌ Klavyeyi Kapat"
 "cancel" = "❌ İptal"
@@ -606,6 +616,12 @@
 "getBanLogs" = "Yasak Günlüklerini Al"
 "allClients" = "Tüm Müşteriler"
 
+"addClient" = "Müşteri Ekle"
+"submitEnable" = "Etkin Olarak Gönder ✅"
+"submitDisable" = "Devre Dışı Olarak Gönder 🚫"
+"use_default" = "🏷️ Varsayılanı Kullan"
+"change_default" = "🔄⚙️ Varsayılanı Değiştir"
+
 [tgbot.answers]
 "successfulOperation" = "✅ İşlem başarılı!"
 "errorOperation" = "❗ İşlemde hata."
diff --git a/web/translation/translate.uk_UA.toml b/web/translation/translate.uk_UA.toml
index 29bf6c63..c3d66b54 100644
--- a/web/translation/translate.uk_UA.toml
+++ b/web/translation/translate.uk_UA.toml
@@ -572,6 +572,16 @@
 "yes" = "✅ Так"
 "no" = "❌ Ні"
 
+"received_id" = "🔑📥 Отриманий ID: {{ .ClientId }}"
+"received_email" = "📧📥 Отриманий Email: {{ .ClientEmail }}"
+"received_comment" = "💬📥 Отриманий коментар: {{ .ClientComment }}"
+"id_prompt" = "🔑 За замовчуванням ID: {{ .ClientId }}\n\nВведіть ваш ID."
+"email_prompt" = "📧 За замовчуванням Email: {{ .ClientEmail }}\n\nВведіть ваш email."
+"comment_prompt" = "💬 За замовчуванням коментар: {{ .ClientComment }}\n\nВведіть ваш коментар."
+"inbound_client_data" = "🔄 Вхідні дані: {{ .InboundRemark }}\n\n🔑 ID: {{ .ClientId }}\n📧 Email: {{ .ClientEmail }}\n💬 Коментар: {{ .ClientComment }}\n\nЗараз ви можете додати клієнта до вхідних!"
+"client_data" = "🔑 ID: {{ .ClientId }}\n📧 Email: {{ .ClientEmail }}\n💬 Коментар: {{ .ClientComment }}\n\nЗараз ви можете додати клієнта до вхідних!"
+"cancel" = "❌ Процес скасовано! \n\nВи можете /start знову в будь-який час. 🔄"
+
 [tgbot.buttons]
 "closeKeyboard" = "❌ Закрити клавіатуру"
 "cancel" = "❌ Скасувати"
@@ -606,6 +616,12 @@
 "getBanLogs" = "Отримати журнали заборон"
 "allClients" = "Всі Клієнти"
 
+"addClient" = "Додати клієнта"
+"submitEnable" = "Надіслати як увімкнено ✅"
+"submitDisable" = "Надіслати як вимкнено 🚫"
+"use_default" = "🏷️ Використати за замовчуванням"
+"change_default" = "🔄⚙️ Змінити за замовчуванням"
+
 [tgbot.answers]
 "successfulOperation" = "✅ Операція успішна!"
 "errorOperation" = "❗ Помилка в роботі."
diff --git a/web/translation/translate.vi_VN.toml b/web/translation/translate.vi_VN.toml
index ec9f9485..2b450ab3 100644
--- a/web/translation/translate.vi_VN.toml
+++ b/web/translation/translate.vi_VN.toml
@@ -572,6 +572,16 @@
 "yes" = "✅ Có"
 "no" = "❌ Không"
 
+"received_id" = "🔑📥 ID nhận được: {{ .ClientId }}"
+"received_email" = "📧📥 Email nhận được: {{ .ClientEmail }}"
+"received_comment" = "💬📥 Nhận được bình luận: {{ .ClientComment }}"
+"id_prompt" = "🔑 ID mặc định: {{ .ClientId }}\n\nNhập ID của bạn."
+"email_prompt" = "📧 Email mặc định: {{ .ClientEmail }}\n\nNhập email của bạn."
+"comment_prompt" = "💬 Bình luận mặc định: {{ .ClientComment }}\n\nNhập bình luận của bạn."
+"inbound_client_data" = "🔄 Dữ liệu đến: {{ .InboundRemark }}\n\n🔑 ID: {{ .ClientId }}\n📧 Email: {{ .ClientEmail }}\n💬 Bình luận: {{ .ClientComment }}\n\nBây giờ bạn có thể thêm khách hàng vào danh sách đến!"
+"client_data" = "🔑 ID: {{ .ClientId }}\n📧 Email: {{ .ClientEmail }}\n💬 Bình luận: {{ .ClientComment }}\n\nBây giờ bạn có thể thêm khách hàng vào danh sách đến!"
+"cancel" = "❌ Quá trình bị hủy! \n\nBạn có thể /start lại bất cứ lúc nào. 🔄"
+
 [tgbot.buttons]
 "closeKeyboard" = "❌ Đóng Bàn Phím"
 "cancel" = "❌ Hủy"
@@ -606,6 +616,12 @@
 "getBanLogs" = "Cấm nhật ký"
 "allClients" = "Tất cả Khách hàng"
 
+"addClient" = "Thêm Khách Hàng"
+"submitEnable" = "Gửi Dưới Dạng Bật ✅"
+"submitDisable" = "Gửi Dưới Dạng Tắt 🚫"
+"use_default" = "🏷️ Sử dụng mặc định"
+"change_default" = "🔄⚙️ Thay đổi mặc định"
+
 [tgbot.answers]
 "successfulOperation" = "✅ Thành công!"
 "errorOperation" = "❗ Lỗi Trong Quá Trình Thực Hiện."
diff --git a/web/translation/translate.zh_CN.toml b/web/translation/translate.zh_CN.toml
index a4a0dc4e..dd60be9e 100644
--- a/web/translation/translate.zh_CN.toml
+++ b/web/translation/translate.zh_CN.toml
@@ -572,6 +572,16 @@
 "yes" = "✅ 是的"
 "no" = "❌ 没有"
 
+"received_id" = "🔑📥 接收到的ID: {{ .ClientId }}"
+"received_email" = "📧📥 接收到的邮件: {{ .ClientEmail }}"
+"received_comment" = "💬📥 接收到的评论: {{ .ClientComment }}"
+"id_prompt" = "🔑 默认ID: {{ .ClientId }}\n\n请输入您的ID。"
+"email_prompt" = "📧 默认邮件: {{ .ClientEmail }}\n\n请输入您的邮箱。"
+"comment_prompt" = "💬 默认评论: {{ .ClientComment }}\n\n请输入您的评论。"
+"inbound_client_data" = "🔄 入站数据: {{ .InboundRemark }}\n\n🔑 ID: {{ .ClientId }}\n📧 邮件: {{ .ClientEmail }}\n💬 评论: {{ .ClientComment }}\n\n现在您可以将客户添加到入站!"
+"client_data" = "🔑 ID: {{ .ClientId }}\n📧 邮件: {{ .ClientEmail }}\n💬 评论: {{ .ClientComment }}\n\n现在您可以将客户添加到入站!"
+"cancel" = "❌ 过程已取消! \n\n您可以随时 /start 重新开始。 🔄"
+
 [tgbot.buttons]
 "closeKeyboard" = "❌ 关闭键盘"
 "cancel" = "❌ 取消"
@@ -606,6 +616,12 @@
 "getBanLogs" = "禁止日志"
 "allClients" = "所有客户"
 
+"addClient" = "添加客户"
+"submitEnable" = "提交为启用 ✅"
+"submitDisable" = "提交为禁用 🚫"
+"use_default" = "🏷️ 使用默认"
+"change_default" = "🔄⚙️ 更改默认"
+
 [tgbot.answers]
 "successfulOperation" = "✅ 成功!"
 "errorOperation" = "❗ 操作错误。"
diff --git a/web/translation/translate.zh_TW.toml b/web/translation/translate.zh_TW.toml
index f12f6d5b..8dd8d96c 100644
--- a/web/translation/translate.zh_TW.toml
+++ b/web/translation/translate.zh_TW.toml
@@ -572,6 +572,16 @@
 "yes" = "✅ 是的"
 "no" = "❌ 沒有"
 
+"received_id" = "🔑📥 接收到的ID: {{ .ClientId }}"
+"received_email" = "📧📥 接收到的電子郵件: {{ .ClientEmail }}"
+"received_comment" = "💬📥 接收到的評論: {{ .ClientComment }}"
+"id_prompt" = "🔑 預設ID: {{ .ClientId }}\n\n請輸入您的ID。"
+"email_prompt" = "📧 預設電子郵件: {{ .ClientEmail }}\n\n請輸入您的電子郵件。"
+"comment_prompt" = "💬 預設評論: {{ .ClientComment }}\n\n請輸入您的評論。"
+"inbound_client_data" = "🔄 進站數據: {{ .InboundRemark }}\n\n🔑 ID: {{ .ClientId }}\n📧 電子郵件: {{ .ClientEmail }}\n💬 評論: {{ .ClientComment }}\n\n您現在可以將客戶加入進站!"
+"client_data" = "🔑 ID: {{ .ClientId }}\n📧 電子郵件: {{ .ClientEmail }}\n💬 評論: {{ .ClientComment }}\n\n您現在可以將客戶加入進站!"
+"cancel" = "❌ 處理已取消! \n\n您隨時可以 /start 再次開始。 🔄"
+
 [tgbot.buttons]
 "closeKeyboard" = "❌ 關閉鍵盤"
 "cancel" = "❌ 取消"
@@ -606,6 +616,12 @@
 "getBanLogs" = "禁止日誌"
 "allClients" = "所有客戶"
 
+"addClient" = "新增客戶"
+"submitEnable" = "提交為啟用 ✅"
+"submitDisable" = "提交為停用 🚫"
+"use_default" = "🏷️ 使用預設"
+"change_default" = "🔄⚙️ 更改預設"
+
 [tgbot.answers]
 "successfulOperation" = "✅ 成功!"
 "errorOperation" = "❗ 操作錯誤。"

From ae0b98c87eca638b0d8ca3fe51c41a0c7215693d Mon Sep 17 00:00:00 2001
From: nistootsin <104831639+nistootsin@users.noreply.github.com>
Date: Sat, 15 Mar 2025 03:00:18 +0330
Subject: [PATCH 2/7] update the go.mod

---
 go.mod | 1 +
 1 file changed, 1 insertion(+)

diff --git a/go.mod b/go.mod
index fe0f83f6..02515227 100644
--- a/go.mod
+++ b/go.mod
@@ -7,6 +7,7 @@ require (
 	github.com/gin-contrib/sessions v1.0.2
 	github.com/gin-gonic/gin v1.10.0
 	github.com/goccy/go-json v0.10.5
+	github.com/google/uuid v1.6.0
 	github.com/mymmrac/telego v0.32.0
 	github.com/nicksnyder/go-i18n/v2 v2.5.1
 	github.com/op/go-logging v0.0.0-20160315200505-970db520ece7

From 698c1be3bb1a9b75c95738711e9a0194c4564313 Mon Sep 17 00:00:00 2001
From: nistootsin <104831639+nistootsin@users.noreply.github.com>
Date: Sun, 16 Mar 2025 03:49:23 +0330
Subject: [PATCH 3/7] feat: complete submission process for adding a client to
 inbounds

---
 web/service/tgbot.go                 | 70 +++++++++++++++++++++++++---
 web/translation/translate.en_US.toml |  2 +
 web/translation/translate.es_ES.toml |  2 +
 web/translation/translate.fa_IR.toml |  2 +
 web/translation/translate.id_ID.toml |  2 +
 web/translation/translate.ja_JP.toml |  2 +
 web/translation/translate.pt_BR.toml |  2 +
 web/translation/translate.ru_RU.toml |  2 +
 web/translation/translate.tr_TR.toml |  2 +
 web/translation/translate.uk_UA.toml |  2 +
 web/translation/translate.vi_VN.toml |  2 +
 web/translation/translate.zh_CN.toml |  2 +
 web/translation/translate.zh_TW.toml |  2 +
 13 files changed, 88 insertions(+), 6 deletions(-)

diff --git a/web/service/tgbot.go b/web/service/tgbot.go
index 5189dc13..dc99a24d 100644
--- a/web/service/tgbot.go
+++ b/web/service/tgbot.go
@@ -2,10 +2,10 @@ package service
 
 import (
 	"crypto/rand"
-	"math/big"
 	"embed"
 	"errors"
 	"fmt"
+	"math/big"
 	"net"
 	"net/url"
 	"os"
@@ -919,6 +919,19 @@ func (t *Tgbot) answerCallback(callbackQuery *telego.CallbackQuery, isAdmin bool
 				}
 				t.SendMsgToTgbot(chatId, t.I18nBot("tgbot.answers.chooseClient", "Inbound=="+inbound.Remark), clients)
 			case "add_client_to":
+				// assign default values to clients variables
+				client_Id =  uuid.New().String() 
+				client_Flow = ""
+				client_Email = t.randomLowerAndNum(8) 
+				client_LimitIP = 0
+				client_TotalGB = 0
+				client_ExpiryTime = 0
+				client_Enable = true 
+				client_TgID = ""
+				client_SubID = t.randomLowerAndNum(16)
+				client_Comment = "" 
+				client_Reset = 0 
+
 				inboundId := dataArray[1]
 				inboundIdInt, err := strconv.Atoi(inboundId)
 				if err != nil {
@@ -990,17 +1003,17 @@ func (t *Tgbot) answerCallback(callbackQuery *telego.CallbackQuery, isAdmin bool
 		t.SendMsgToTgbot(chatId, t.I18nBot("tgbot.commands.helpAdminCommands"))
 	case "add_client":
 		// assign default values to clients variables
-		client_Id =  uuid.New().String() // button
+		client_Id =  uuid.New().String() 
 		client_Flow = ""
-		client_Email = t.randomLowerAndNum(8) // button
+		client_Email = t.randomLowerAndNum(8) 
 		client_LimitIP = 0
 		client_TotalGB = 0
 		client_ExpiryTime = 0
-		client_Enable = true // button
+		client_Enable = true 
 		client_TgID = ""
 		client_SubID = t.randomLowerAndNum(16)
-		client_Comment = "" // button
-		client_Reset = 0 // button
+		client_Comment = "" 
+		client_Reset = 0 
 
 		inbounds, err := t.getInboundsAddClient()
 		if err != nil {
@@ -1054,9 +1067,54 @@ func (t *Tgbot) answerCallback(callbackQuery *telego.CallbackQuery, isAdmin bool
 	case "add_client_cancel":
 		delete(userStates, chatId)
 		t.SendMsgToTgbot(chatId, t.I18nBot("tgbot.messages.cancel"), tu.ReplyKeyboardRemove())
+	case "add_client_submit_enable":
+		inboundService := &InboundService{} 
+		_, err := inboundService.SubmitAddClient()
+		if err != nil {
+			errorMessage := fmt.Sprintf("%v", err)
+			t.SendMsgToTgbot(chatId, t.I18nBot("tgbot.messages.error_add_client", "error=="+errorMessage), tu.ReplyKeyboardRemove())
+		} else {
+			t.SendMsgToTgbot(chatId, t.I18nBot("tgbot.messages.success_add_client"), tu.ReplyKeyboardRemove())
+		}
+	case "add_client_submit_disable":
+		client_Enable = false
+		inboundService := &InboundService{} 
+		_, err := inboundService.SubmitAddClient()
+		if err != nil {
+			errorMessage := fmt.Sprintf("%v", err)
+			t.SendMsgToTgbot(chatId, t.I18nBot("tgbot.messages.error_add_client", "error=="+errorMessage), tu.ReplyKeyboardRemove())
+		} else {
+			t.SendMsgToTgbot(chatId, t.I18nBot("tgbot.messages.success_add_client"), tu.ReplyKeyboardRemove())
+		}
 	}
 }
 
+
+func (s *InboundService) SubmitAddClient() (bool, error) {
+	jsonString := fmt.Sprintf(`{"clients": [{
+  "id": "%s",
+  "flow": "%s",
+  "email": "%s",
+  "limitIp": %d,
+  "totalGB": %d,
+  "expiryTime": %d,
+  "enable": %t,
+  "tgId": "%s",
+  "subId": "%s",
+  "comment": "%s",
+  "reset": %d
+}]}`, client_Id, client_Flow, client_Email, client_LimitIP, client_TotalGB, client_ExpiryTime, client_Enable, client_TgID, client_SubID, client_Comment, client_Reset)
+
+
+	newInbound := &model.Inbound{
+		Id:       receiver_inbound_ID,
+		Settings: jsonString, 
+	}
+
+
+	return s.AddInboundClient(newInbound)
+}
+
 func checkAdmin(tgId int64) bool {
 	for _, adminId := range adminIds {
 		if adminId == tgId {
diff --git a/web/translation/translate.en_US.toml b/web/translation/translate.en_US.toml
index 96b6b8a9..ae4974dc 100644
--- a/web/translation/translate.en_US.toml
+++ b/web/translation/translate.en_US.toml
@@ -581,6 +581,8 @@
 "inbound_client_data" = "🔄 Inbound: {{ .InboundRemark }}\n\n🔑 ID: {{ .ClientId }}\n📧 Email: {{ .ClientEmail }}\n💬 Comment: {{ .ClientComment }}\n\nYou can add the client to inbound now!"
 "client_data" = "🔑 ID: {{ .ClientId }}\n📧 Email: {{ .ClientEmail }}\n💬 Comment: {{ .ClientComment }}\n\nYou can add the client to inbound now!"
 "cancel" = "❌ Process Canceled! \n\nYou can /start again anytime. 🔄"
+"error_add_client"  = "⚠️ Error:\n\n {{ .error }}"
+"success_add_client" = "🏆 Success! You can now modify it using the 'All Clients' inline button."
 
 [tgbot.buttons]
 "closeKeyboard" = "❌ Close Keyboard"
diff --git a/web/translation/translate.es_ES.toml b/web/translation/translate.es_ES.toml
index b9081d90..64b813ce 100644
--- a/web/translation/translate.es_ES.toml
+++ b/web/translation/translate.es_ES.toml
@@ -581,6 +581,8 @@
 "inbound_client_data" = "🔄 Entrada: {{ .InboundRemark }}\n\n🔑 ID: {{ .ClientId }}\n📧 Correo: {{ .ClientEmail }}\n💬 Comentario: {{ .ClientComment }}\n\n¡Puedes añadir el cliente a la entrada ahora!"
 "client_data" = "🔑 ID: {{ .ClientId }}\n📧 Correo: {{ .ClientEmail }}\n💬 Comentario: {{ .ClientComment }}\n\n¡Puedes añadir el cliente a la entrada ahora!"
 "cancel" = "❌ ¡Proceso cancelado! \n\nPuedes /start de nuevo en cualquier momento. 🔄"
+"error_add_client" = "⚠️ Error:\n\n {{ .error }}"
+"success_add_client" = "🏆 ¡Éxito! Ahora puedes modificarlo usando el botón en línea 'All Clients'."
 
 [tgbot.buttons]
 "closeKeyboard" = "❌ Cerrar Teclado"
diff --git a/web/translation/translate.fa_IR.toml b/web/translation/translate.fa_IR.toml
index 75057f07..0dee6dc3 100644
--- a/web/translation/translate.fa_IR.toml
+++ b/web/translation/translate.fa_IR.toml
@@ -581,6 +581,8 @@
 "inbound_client_data" = "🔄 ورودی: {{ .InboundRemark }}\n\n🔑 شناسه: {{ .ClientId }}\n📧 ایمیل: {{ .ClientEmail }}\n💬 کامنت: {{ .ClientComment }}\n\nهم‌اکنون می‌توانید مشتری را به ورودی اضافه کنید!"
 "client_data" = "🔑 شناسه: {{ .ClientId }}\n📧 ایمیل: {{ .ClientEmail }}\n💬 کامنت: {{ .ClientComment }}\n\nهم‌اکنون می‌توانید مشتری را به ورودی اضافه کنید!"
 "cancel" = "❌ فرآیند لغو شد! \n\nشما می‌توانید هر زمان دوباره /start کنید. 🔄"
+"error_add_client" = "⚠️ خطا:\n\n {{ .error }}"
+"success_add_client" = "🏆 موفقیت! اکنون می‌توانید آن را با استفاده از دکمه 'All Clients' تغییر دهید."
 
 [tgbot.buttons]
 "closeKeyboard" = "❌ بستن کیبورد"
diff --git a/web/translation/translate.id_ID.toml b/web/translation/translate.id_ID.toml
index 84e8fb22..70fb9c46 100644
--- a/web/translation/translate.id_ID.toml
+++ b/web/translation/translate.id_ID.toml
@@ -581,6 +581,8 @@
 "inbound_client_data" = "🔄 Masuk: {{ .InboundRemark }}\n\n🔑 ID: {{ .ClientId }}\n📧 Email: {{ .ClientEmail }}\n💬 Komentar: {{ .ClientComment }}\n\nSekarang Anda bisa menambahkan klien ke inbound!"
 "client_data" = "🔑 ID: {{ .ClientId }}\n📧 Email: {{ .ClientEmail }}\n💬 Komentar: {{ .ClientComment }}\n\nSekarang Anda bisa menambahkan klien ke inbound!"
 "cancel" = "❌ Proses dibatalkan! \n\nAnda bisa /start lagi kapan saja. 🔄"
+"error_add_client" = "⚠️ Kesalahan:\n\n {{ .error }}"
+"success_add_client" = "🏆 Sukses! Sekarang Anda dapat mengubahnya menggunakan tombol 'All Clients'."
 
 [tgbot.buttons]
 "closeKeyboard" = "❌ Tutup Papan Ketik"
diff --git a/web/translation/translate.ja_JP.toml b/web/translation/translate.ja_JP.toml
index 102ea429..f70790e1 100644
--- a/web/translation/translate.ja_JP.toml
+++ b/web/translation/translate.ja_JP.toml
@@ -581,6 +581,8 @@
 "inbound_client_data" = "🔄 受信データ: {{ .InboundRemark }}\n\n🔑 ID: {{ .ClientId }}\n📧 メール: {{ .ClientEmail }}\n💬 コメント: {{ .ClientComment }}\n\nクライアントを受信リストに追加できます!"
 "client_data" = "🔑 ID: {{ .ClientId }}\n📧 メール: {{ .ClientEmail }}\n💬 コメント: {{ .ClientComment }}\n\nクライアントを受信リストに追加できます!"
 "cancel" = "❌ 処理がキャンセルされました! \n\nいつでも/startでやり直せます。 🔄"
+"error_add_client" = "⚠️ エラー:\n\n {{ .error }}"
+"success_add_client" = "🏆 成功!「All Clients」ボタンを使って変更できます。"
 
 [tgbot.buttons]
 "closeKeyboard" = "❌ キーボードを閉じる"
diff --git a/web/translation/translate.pt_BR.toml b/web/translation/translate.pt_BR.toml
index f3a2bb9f..3365bd40 100644
--- a/web/translation/translate.pt_BR.toml
+++ b/web/translation/translate.pt_BR.toml
@@ -581,6 +581,8 @@
 "inbound_client_data" = "🔄 Entrada: {{ .InboundRemark }}\n\n🔑 ID: {{ .ClientId }}\n📧 E-mail: {{ .ClientEmail }}\n💬 Comentário: {{ .ClientComment }}\n\nVocê pode adicionar o cliente à entrada agora!"
 "client_data" = "🔑 ID: {{ .ClientId }}\n📧 E-mail: {{ .ClientEmail }}\n💬 Comentário: {{ .ClientComment }}\n\nVocê pode adicionar o cliente à entrada agora!"
 "cancel" = "❌ Processo cancelado! \n\nVocê pode /start novamente a qualquer momento. 🔄"
+"error_add_client" = "⚠️ Erro:\n\n {{ .error }}"
+"success_add_client" = "🏆 Sucesso! Agora você pode modificá-lo usando o botão 'All Clients'."
 
 [tgbot.buttons]
 "closeKeyboard" = "❌ Fechar teclado"
diff --git a/web/translation/translate.ru_RU.toml b/web/translation/translate.ru_RU.toml
index 4cd2abe3..59366148 100644
--- a/web/translation/translate.ru_RU.toml
+++ b/web/translation/translate.ru_RU.toml
@@ -581,6 +581,8 @@
 "inbound_client_data" = "🔄 Входящие: {{ .InboundRemark }}\n\n🔑 ID: {{ .ClientId }}\n📧 Email: {{ .ClientEmail }}\n💬 Комментарий: {{ .ClientComment }}\n\nТеперь вы можете добавить клиента в входящие!"
 "client_data" = "🔑 ID: {{ .ClientId }}\n📧 Email: {{ .ClientEmail }}\n💬 Комментарий: {{ .ClientComment }}\n\nТеперь вы можете добавить клиента в входящие!"
 "cancel" = "❌ Процесс отменен! \n\nВы можете снова запустить /start в любое время. 🔄"
+"error_add_client" = "⚠️ Ошибка:\n\n {{ .error }}"
+"success_add_client" = "🏆 Успех! Теперь вы можете изменить его с помощью кнопки 'All Clients'."
 
 [tgbot.buttons]
 "closeKeyboard" = "❌ Закрыть клавиатуру"
diff --git a/web/translation/translate.tr_TR.toml b/web/translation/translate.tr_TR.toml
index e5ee0a95..3e0fdc12 100644
--- a/web/translation/translate.tr_TR.toml
+++ b/web/translation/translate.tr_TR.toml
@@ -581,6 +581,8 @@
 "inbound_client_data" = "🔄 Giriş: {{ .InboundRemark }}\n\n🔑 ID: {{ .ClientId }}\n📧 E-posta: {{ .ClientEmail }}\n💬 Yorum: {{ .ClientComment }}\n\nŞimdi müşteri girişine ekleyebilirsiniz!"
 "client_data" = "🔑 ID: {{ .ClientId }}\n📧 E-posta: {{ .ClientEmail }}\n💬 Yorum: {{ .ClientComment }}\n\nŞimdi müşteri girişine ekleyebilirsiniz!"
 "cancel" = "❌ İşlem iptal edildi! \n\nİstediğiniz zaman /start komutunu tekrar verebilirsiniz. 🔄"
+"error_add_client" = "⚠️ Hata:\n\n {{ .error }}"
+"success_add_client" = "🏆 Başarılı! Şimdi 'All Clients' düğmesini kullanarak düzenleyebilirsiniz."
 
 [tgbot.buttons]
 "closeKeyboard" = "❌ Klavyeyi Kapat"
diff --git a/web/translation/translate.uk_UA.toml b/web/translation/translate.uk_UA.toml
index c3d66b54..66b5217c 100644
--- a/web/translation/translate.uk_UA.toml
+++ b/web/translation/translate.uk_UA.toml
@@ -581,6 +581,8 @@
 "inbound_client_data" = "🔄 Вхідні дані: {{ .InboundRemark }}\n\n🔑 ID: {{ .ClientId }}\n📧 Email: {{ .ClientEmail }}\n💬 Коментар: {{ .ClientComment }}\n\nЗараз ви можете додати клієнта до вхідних!"
 "client_data" = "🔑 ID: {{ .ClientId }}\n📧 Email: {{ .ClientEmail }}\n💬 Коментар: {{ .ClientComment }}\n\nЗараз ви можете додати клієнта до вхідних!"
 "cancel" = "❌ Процес скасовано! \n\nВи можете /start знову в будь-який час. 🔄"
+"error_add_client" = "⚠️ Помилка:\n\n {{ .error }}"
+"success_add_client" = "🏆 Успіх! Тепер ви можете змінити його за допомогою кнопки 'All Clients'."
 
 [tgbot.buttons]
 "closeKeyboard" = "❌ Закрити клавіатуру"
diff --git a/web/translation/translate.vi_VN.toml b/web/translation/translate.vi_VN.toml
index 2b450ab3..5131c9f8 100644
--- a/web/translation/translate.vi_VN.toml
+++ b/web/translation/translate.vi_VN.toml
@@ -581,6 +581,8 @@
 "inbound_client_data" = "🔄 Dữ liệu đến: {{ .InboundRemark }}\n\n🔑 ID: {{ .ClientId }}\n📧 Email: {{ .ClientEmail }}\n💬 Bình luận: {{ .ClientComment }}\n\nBây giờ bạn có thể thêm khách hàng vào danh sách đến!"
 "client_data" = "🔑 ID: {{ .ClientId }}\n📧 Email: {{ .ClientEmail }}\n💬 Bình luận: {{ .ClientComment }}\n\nBây giờ bạn có thể thêm khách hàng vào danh sách đến!"
 "cancel" = "❌ Quá trình bị hủy! \n\nBạn có thể /start lại bất cứ lúc nào. 🔄"
+"error_add_client" = "⚠️ Lỗi:\n\n {{ .error }}"
+"success_add_client" = "🏆 Thành công! Bây giờ bạn có thể chỉnh sửa nó bằng nút 'All Clients'."
 
 [tgbot.buttons]
 "closeKeyboard" = "❌ Đóng Bàn Phím"
diff --git a/web/translation/translate.zh_CN.toml b/web/translation/translate.zh_CN.toml
index dd60be9e..d56fd43e 100644
--- a/web/translation/translate.zh_CN.toml
+++ b/web/translation/translate.zh_CN.toml
@@ -581,6 +581,8 @@
 "inbound_client_data" = "🔄 入站数据: {{ .InboundRemark }}\n\n🔑 ID: {{ .ClientId }}\n📧 邮件: {{ .ClientEmail }}\n💬 评论: {{ .ClientComment }}\n\n现在您可以将客户添加到入站!"
 "client_data" = "🔑 ID: {{ .ClientId }}\n📧 邮件: {{ .ClientEmail }}\n💬 评论: {{ .ClientComment }}\n\n现在您可以将客户添加到入站!"
 "cancel" = "❌ 过程已取消! \n\n您可以随时 /start 重新开始。 🔄"
+"error_add_client" = "⚠️ 错误:\n\n {{ .error }}"
+"success_add_client" = "🏆 成功!现在您可以使用“All Clients”按钮进行修改。"
 
 [tgbot.buttons]
 "closeKeyboard" = "❌ 关闭键盘"
diff --git a/web/translation/translate.zh_TW.toml b/web/translation/translate.zh_TW.toml
index 8dd8d96c..2938c7c8 100644
--- a/web/translation/translate.zh_TW.toml
+++ b/web/translation/translate.zh_TW.toml
@@ -581,6 +581,8 @@
 "inbound_client_data" = "🔄 進站數據: {{ .InboundRemark }}\n\n🔑 ID: {{ .ClientId }}\n📧 電子郵件: {{ .ClientEmail }}\n💬 評論: {{ .ClientComment }}\n\n您現在可以將客戶加入進站!"
 "client_data" = "🔑 ID: {{ .ClientId }}\n📧 電子郵件: {{ .ClientEmail }}\n💬 評論: {{ .ClientComment }}\n\n您現在可以將客戶加入進站!"
 "cancel" = "❌ 處理已取消! \n\n您隨時可以 /start 再次開始。 🔄"
+"error_add_client" = "⚠️ 錯誤:\n\n {{ .error }}"
+"success_add_client" = "🏆 成功!現在您可以使用「All Clients」按鈕進行修改。"
 
 [tgbot.buttons]
 "closeKeyboard" = "❌ 關閉鍵盤"

From 27fca74d10c72475c80f4eb20d84d4f30ed75970 Mon Sep 17 00:00:00 2001
From: nistootsin <104831639+nistootsin@users.noreply.github.com>
Date: Mon, 17 Mar 2025 02:03:28 +0330
Subject: [PATCH 4/7] - Add client variables: client_method,
 client_sh_password, client_tr_password - Exclude specific inbound protocols
 (HTTP, WireGuard, Socks, DOKODEMO) from addclient inline button

---
 web/service/tgbot.go | 76 ++++++++++++++++++++++++++++++++++++++------
 1 file changed, 67 insertions(+), 9 deletions(-)

diff --git a/web/service/tgbot.go b/web/service/tgbot.go
index dc99a24d..00c74100 100644
--- a/web/service/tgbot.go
+++ b/web/service/tgbot.go
@@ -3,6 +3,7 @@ package service
 import (
 	"crypto/rand"
 	"embed"
+	"encoding/base64"
 	"errors"
 	"fmt"
 	"math/big"
@@ -51,7 +52,12 @@ var (
 	client_TgID       string 
 	client_SubID      string
 	client_Comment    string 
-	client_Reset      int    
+	client_Reset      int 
+	client_security   string
+	client_ShPassword   string
+	client_TrPassword   string
+	client_method	  string
+
 )
 
 
@@ -424,6 +430,17 @@ func (t *Tgbot) randomLowerAndNum(length int) string {
 	return string(bytes)
 }
 
+
+func (t *Tgbot) randomShadowSocksPassword() string {
+	array := make([]byte, 32)
+	_, err := rand.Read(array)
+	if err != nil {
+		return t.randomLowerAndNum(32)
+	}
+	return base64.StdEncoding.EncodeToString(array)
+}
+
+
 func (t *Tgbot) answerCallback(callbackQuery *telego.CallbackQuery, isAdmin bool) {
 	chatId := callbackQuery.Message.GetChat().ID
 
@@ -931,6 +948,10 @@ func (t *Tgbot) answerCallback(callbackQuery *telego.CallbackQuery, isAdmin bool
 				client_SubID = t.randomLowerAndNum(16)
 				client_Comment = "" 
 				client_Reset = 0 
+				client_security="auto"
+				client_ShPassword=t.randomShadowSocksPassword()
+				client_TrPassword=t.randomLowerAndNum(10)
+				client_method=""
 
 				inboundId := dataArray[1]
 				inboundIdInt, err := strconv.Atoi(inboundId)
@@ -1014,6 +1035,9 @@ func (t *Tgbot) answerCallback(callbackQuery *telego.CallbackQuery, isAdmin bool
 		client_SubID = t.randomLowerAndNum(16)
 		client_Comment = "" 
 		client_Reset = 0 
+		client_ShPassword=t.randomShadowSocksPassword()
+		client_TrPassword=t.randomLowerAndNum(10)
+		client_method=""
 
 		inbounds, err := t.getInboundsAddClient()
 		if err != nil {
@@ -1389,7 +1413,7 @@ func (t *Tgbot) getInboundUsages() string {
 	}
 	return info
 }
-func (t *Tgbot) getInboundsKeyboard(action string) (*telego.InlineKeyboardMarkup, error) {
+func (t *Tgbot) getInbounds() (*telego.InlineKeyboardMarkup, error) {
 	inbounds, err := t.inboundService.GetAllInbounds()
 	if err != nil {
 		logger.Warning("GetAllInbounds run failed:", err)
@@ -1407,11 +1431,11 @@ func (t *Tgbot) getInboundsKeyboard(action string) (*telego.InlineKeyboardMarkup
 		if inbound.Enable {
 			status = "✅"
 		}
-		callbackData := t.encodeQuery(fmt.Sprintf("%s %d", action, inbound.Id))
+		callbackData := t.encodeQuery(fmt.Sprintf("%s %d","get_clients", inbound.Id))
 		buttons = append(buttons, tu.InlineKeyboardButton(fmt.Sprintf("%v - %v", inbound.Remark, status)).WithCallbackData(callbackData))
 	}
 
-	cols := 3
+	cols := 1
 	if len(buttons) >= 6 {
 		cols = 2
 	}
@@ -1420,12 +1444,46 @@ func (t *Tgbot) getInboundsKeyboard(action string) (*telego.InlineKeyboardMarkup
 	return keyboard, nil
 }
 
-func (t *Tgbot) getInbounds() (*telego.InlineKeyboardMarkup, error) {
-	return t.getInboundsKeyboard("get_clients")
-}
-
 func (t *Tgbot) getInboundsAddClient() (*telego.InlineKeyboardMarkup, error) {
-	return t.getInboundsKeyboard("add_client_to")
+	inbounds, err := t.inboundService.GetAllInbounds()
+	if err != nil {
+		logger.Warning("GetAllInbounds run failed:", err)
+		return nil, errors.New(t.I18nBot("tgbot.answers.getInboundsFailed"))
+	}
+
+	if len(inbounds) == 0 {
+		logger.Warning("No inbounds found")
+		return nil, errors.New(t.I18nBot("tgbot.answers.getInboundsFailed"))
+	}
+
+	excludedProtocols := map[model.Protocol]bool{
+        model.DOKODEMO: true,
+        model.Socks:    true,
+        model.WireGuard: true,
+        model.HTTP:     true,
+    }
+
+	var buttons []telego.InlineKeyboardButton
+	for _, inbound := range inbounds {
+		if excludedProtocols[inbound.Protocol] {
+			continue
+		}
+
+		status := "❌"
+		if inbound.Enable {
+			status = "✅"
+		}
+		callbackData := t.encodeQuery(fmt.Sprintf("%s %d","add_client_to", inbound.Id))
+		buttons = append(buttons, tu.InlineKeyboardButton(fmt.Sprintf("%v - %v", inbound.Remark, status)).WithCallbackData(callbackData))
+	}
+
+	cols := 1
+	if len(buttons) >= 6 {
+		cols = 2
+	}
+
+	keyboard := tu.InlineKeyboardGrid(tu.InlineKeyboardCols(cols, buttons...))
+	return keyboard, nil
 }
 
 func (t *Tgbot) getInboundClients(id int) (*telego.InlineKeyboardMarkup, error) {

From 03dcb184a82455788e7b915eee6cbf28ff4024db Mon Sep 17 00:00:00 2001
From: nistootsin <104831639+nistootsin@users.noreply.github.com>
Date: Mon, 17 Mar 2025 04:00:47 +0330
Subject: [PATCH 5/7] - customize the add client message and json for each
 protocol

---
 web/service/tgbot.go                 | 148 ++++++++++++++++++++++-----
 web/translation/translate.en_US.toml |   3 +-
 web/translation/translate.es_ES.toml |   3 +-
 web/translation/translate.fa_IR.toml |   3 +-
 web/translation/translate.id_ID.toml |   3 +-
 web/translation/translate.ja_JP.toml |   3 +-
 web/translation/translate.pt_BR.toml |   3 +-
 web/translation/translate.ru_RU.toml |   3 +-
 web/translation/translate.tr_TR.toml |   3 +-
 web/translation/translate.uk_UA.toml |   3 +-
 web/translation/translate.vi_VN.toml |   3 +-
 web/translation/translate.zh_CN.toml |   3 +-
 web/translation/translate.zh_TW.toml |   3 +-
 13 files changed, 147 insertions(+), 37 deletions(-)

diff --git a/web/service/tgbot.go b/web/service/tgbot.go
index 00c74100..543f93c4 100644
--- a/web/service/tgbot.go
+++ b/web/service/tgbot.go
@@ -53,10 +53,10 @@ var (
 	client_SubID      string
 	client_Comment    string 
 	client_Reset      int 
-	client_security   string
+	client_Security   string
 	client_ShPassword   string
 	client_TrPassword   string
-	client_method	  string
+	client_Method	  string
 
 )
 
@@ -948,10 +948,10 @@ func (t *Tgbot) answerCallback(callbackQuery *telego.CallbackQuery, isAdmin bool
 				client_SubID = t.randomLowerAndNum(16)
 				client_Comment = "" 
 				client_Reset = 0 
-				client_security="auto"
+				client_Security="auto"
 				client_ShPassword=t.randomShadowSocksPassword()
 				client_TrPassword=t.randomLowerAndNum(10)
-				client_method=""
+				client_Method=""
 
 				inboundId := dataArray[1]
 				inboundIdInt, err := strconv.Atoi(inboundId)
@@ -966,7 +966,7 @@ func (t *Tgbot) answerCallback(callbackQuery *telego.CallbackQuery, isAdmin bool
 					return
 				}
 				
-				message := t.I18nBot("tgbot.messages.inbound_client_data", "InboundRemark=="+inbound.Remark,"ClientId=="+client_Id,"ClientEmail=="+client_Email,"ClientComment=="+client_Comment)
+				message, err := t.BuildInboundClientDataMessage(inbound.Remark, inbound.Protocol)
 				
 				t.addClient(chatId, message)
 			}
@@ -1035,9 +1035,10 @@ func (t *Tgbot) answerCallback(callbackQuery *telego.CallbackQuery, isAdmin bool
 		client_SubID = t.randomLowerAndNum(16)
 		client_Comment = "" 
 		client_Reset = 0 
+		client_Security="auto"
 		client_ShPassword=t.randomShadowSocksPassword()
 		client_TrPassword=t.randomLowerAndNum(10)
-		client_method=""
+		client_Method=""
 
 		inbounds, err := t.getInboundsAddClient()
 		if err != nil {
@@ -1092,8 +1093,7 @@ func (t *Tgbot) answerCallback(callbackQuery *telego.CallbackQuery, isAdmin bool
 		delete(userStates, chatId)
 		t.SendMsgToTgbot(chatId, t.I18nBot("tgbot.messages.cancel"), tu.ReplyKeyboardRemove())
 	case "add_client_submit_enable":
-		inboundService := &InboundService{} 
-		_, err := inboundService.SubmitAddClient()
+		_, err := t.SubmitAddClient()
 		if err != nil {
 			errorMessage := fmt.Sprintf("%v", err)
 			t.SendMsgToTgbot(chatId, t.I18nBot("tgbot.messages.error_add_client", "error=="+errorMessage), tu.ReplyKeyboardRemove())
@@ -1102,8 +1102,7 @@ func (t *Tgbot) answerCallback(callbackQuery *telego.CallbackQuery, isAdmin bool
 		}
 	case "add_client_submit_disable":
 		client_Enable = false
-		inboundService := &InboundService{} 
-		_, err := inboundService.SubmitAddClient()
+		_, err := t.SubmitAddClient()
 		if err != nil {
 			errorMessage := fmt.Sprintf("%v", err)
 			t.SendMsgToTgbot(chatId, t.I18nBot("tgbot.messages.error_add_client", "error=="+errorMessage), tu.ReplyKeyboardRemove())
@@ -1113,22 +1112,121 @@ func (t *Tgbot) answerCallback(callbackQuery *telego.CallbackQuery, isAdmin bool
 	}
 }
 
+func (t *Tgbot) BuildInboundClientDataMessage(inbound_remark string ,protocol model.Protocol) (string, error) {
+    var message string
 
-func (s *InboundService) SubmitAddClient() (bool, error) {
-	jsonString := fmt.Sprintf(`{"clients": [{
-  "id": "%s",
-  "flow": "%s",
-  "email": "%s",
-  "limitIp": %d,
-  "totalGB": %d,
-  "expiryTime": %d,
-  "enable": %t,
-  "tgId": "%s",
-  "subId": "%s",
-  "comment": "%s",
-  "reset": %d
-}]}`, client_Id, client_Flow, client_Email, client_LimitIP, client_TotalGB, client_ExpiryTime, client_Enable, client_TgID, client_SubID, client_Comment, client_Reset)
+    switch protocol {
+    case model.VMESS:
+        message = t.I18nBot("tgbot.messages.inbound_client_data_id", "InboundRemark=="+inbound_remark,"ClientId=="+client_Id,"ClientEmail=="+client_Email,"ClientComment=="+client_Comment)
+    case model.VLESS:
+        message = t.I18nBot("tgbot.messages.inbound_client_data_id", "InboundRemark=="+inbound_remark,"ClientId=="+client_Id,"ClientEmail=="+client_Email,"ClientComment=="+client_Comment)
 
+    case model.Trojan:
+        message = t.I18nBot("tgbot.messages.inbound_client_data_pass", "InboundRemark=="+inbound_remark,"ClientPass=="+client_TrPassword,"ClientEmail=="+client_Email,"ClientComment=="+client_Comment)
+
+    case model.Shadowsocks:
+        message = t.I18nBot("tgbot.messages.inbound_client_data_pass", "InboundRemark=="+inbound_remark,"ClientPass=="+client_ShPassword,"ClientEmail=="+client_Email,"ClientComment=="+client_Comment)
+
+    default:
+        return "", errors.New("unknown protocol")
+    }
+
+    return message, nil
+}
+
+
+
+func (t *Tgbot) BuildJSONForProtocol(protocol model.Protocol) (string, error) {
+    var jsonString string
+
+    switch protocol {
+    case model.VMESS:
+        jsonString = fmt.Sprintf(`{
+            "clients": [{
+                "id": "%s",
+                "security": "%s",
+                "email": "%s",
+                "limitIp": %d,
+                "totalGB": %d,
+                "expiryTime": %d,
+                "enable": %t,
+                "tgId": "%s",
+                "subId": "%s",
+                "comment": "%s",
+                "reset": %d
+            }]
+        }`, client_Id, client_Security, client_Email, client_LimitIP, client_TotalGB, client_ExpiryTime, client_Enable, client_TgID, client_SubID, client_Comment, client_Reset)
+
+    case model.VLESS:
+        jsonString = fmt.Sprintf(`{
+            "clients": [{
+                "id": "%s",
+                "flow": "%s",
+                "email": "%s",
+                "limitIp": %d,
+                "totalGB": %d,
+                "expiryTime": %d,
+                "enable": %t,
+                "tgId": "%s",
+                "subId": "%s",
+                "comment": "%s",
+                "reset": %d
+            }]
+        }`, client_Id, client_Flow, client_Email, client_LimitIP, client_TotalGB, client_ExpiryTime, client_Enable, client_TgID, client_SubID, client_Comment, client_Reset)
+
+    case model.Trojan:
+        jsonString = fmt.Sprintf(`{
+            "clients": [{
+                "password": "%s",
+                "email": "%s",
+                "limitIp": %d,
+                "totalGB": %d,
+                "expiryTime": %d,
+                "enable": %t,
+                "tgId": "%s",
+                "subId": "%s",
+                "comment": "%s",
+                "reset": %d
+            }]
+        }`, client_TrPassword, client_Email, client_LimitIP, client_TotalGB, client_ExpiryTime, client_Enable, client_TgID, client_SubID, client_Comment, client_Reset)
+
+    case model.Shadowsocks:
+        jsonString = fmt.Sprintf(`{
+            "clients": [{
+                "method": "%s",
+                "password": "%s",
+                "email": "%s",
+                "limitIp": %d,
+                "totalGB": %d,
+                "expiryTime": %d,
+                "enable": %t,
+                "tgId": "%s",
+                "subId": "%s",
+                "comment": "%s",
+                "reset": %d
+            }]
+        }`, client_Method, client_ShPassword, client_Email, client_LimitIP, client_TotalGB, client_ExpiryTime, client_Enable, client_TgID, client_SubID, client_Comment, client_Reset)
+
+    default:
+        return "", errors.New("unknown protocol")
+    }
+
+    return jsonString, nil
+}
+
+
+func (t *Tgbot) SubmitAddClient() (bool, error) {
+
+
+	inbound, err := t.inboundService.GetInbound(receiver_inbound_ID)
+	if err != nil {
+		logger.Warning("getIboundClients run failed:", err)
+		return false, errors.New(t.I18nBot("tgbot.answers.getInboundsFailed"))
+	}
+
+	
+
+	jsonString, err := t.BuildJSONForProtocol(inbound.Protocol)
 
 	newInbound := &model.Inbound{
 		Id:       receiver_inbound_ID,
@@ -1136,7 +1234,7 @@ func (s *InboundService) SubmitAddClient() (bool, error) {
 	}
 
 
-	return s.AddInboundClient(newInbound)
+	return t.inboundService.AddInboundClient(newInbound)
 }
 
 func checkAdmin(tgId int64) bool {
diff --git a/web/translation/translate.en_US.toml b/web/translation/translate.en_US.toml
index ae4974dc..eaaba530 100644
--- a/web/translation/translate.en_US.toml
+++ b/web/translation/translate.en_US.toml
@@ -578,7 +578,8 @@
 "id_prompt" = "🔑 Default ID: {{ .ClientId }}\n\nEnter your id."
 "email_prompt" = "📧 Default Email: {{ .ClientEmail }}\n\nEnter your email."
 "comment_prompt" = "💬 Default Comment: {{ .ClientComment }}\n\nEnter your Comment."
-"inbound_client_data" = "🔄 Inbound: {{ .InboundRemark }}\n\n🔑 ID: {{ .ClientId }}\n📧 Email: {{ .ClientEmail }}\n💬 Comment: {{ .ClientComment }}\n\nYou can add the client to inbound now!"
+"inbound_client_data_id" = "🔄 Inbound: {{ .InboundRemark }}\n\n🔑 ID: {{ .ClientId }}\n📧 Email: {{ .ClientEmail }}\n💬 Comment: {{ .ClientComment }}\n\nYou can add the client to inbound now!"
+"inbound_client_data_pass" = "🔄 Inbound: {{ .InboundRemark }}\n\n🔑 Password: {{ .ClientPass }}\n📧 Email: {{ .ClientEmail }}\n💬 Comment: {{ .ClientComment }}\n\nYou can add the client to inbound now!"
 "client_data" = "🔑 ID: {{ .ClientId }}\n📧 Email: {{ .ClientEmail }}\n💬 Comment: {{ .ClientComment }}\n\nYou can add the client to inbound now!"
 "cancel" = "❌ Process Canceled! \n\nYou can /start again anytime. 🔄"
 "error_add_client"  = "⚠️ Error:\n\n {{ .error }}"
diff --git a/web/translation/translate.es_ES.toml b/web/translation/translate.es_ES.toml
index 64b813ce..f3eb33d2 100644
--- a/web/translation/translate.es_ES.toml
+++ b/web/translation/translate.es_ES.toml
@@ -578,7 +578,8 @@
 "id_prompt" = "🔑 ID predeterminado: {{ .ClientId }}\n\nIntroduce tu ID."
 "email_prompt" = "📧 Correo predeterminado: {{ .ClientEmail }}\n\nIntroduce tu correo."
 "comment_prompt" = "💬 Comentario predeterminado: {{ .ClientComment }}\n\nIntroduce tu comentario."
-"inbound_client_data" = "🔄 Entrada: {{ .InboundRemark }}\n\n🔑 ID: {{ .ClientId }}\n📧 Correo: {{ .ClientEmail }}\n💬 Comentario: {{ .ClientComment }}\n\n¡Puedes añadir el cliente a la entrada ahora!"
+"inbound_client_data_id" = "🔄 Inbound: {{ .InboundRemark }}\n\n🔑 ID: {{ .ClientId }}\n📧 Email: {{ .ClientEmail }}\n💬 Comment: {{ .ClientComment }}\n\n¡Ahora puedes agregar al cliente a inbound!"
+"inbound_client_data_pass" = "🔄 Inbound: {{ .InboundRemark }}\n\n🔑 Contraseña: {{ .ClientPass }}\n📧 Email: {{ .ClientEmail }}\n💬 Comment: {{ .ClientComment }}\n\n¡Ahora puedes agregar al cliente a inbound!"
 "client_data" = "🔑 ID: {{ .ClientId }}\n📧 Correo: {{ .ClientEmail }}\n💬 Comentario: {{ .ClientComment }}\n\n¡Puedes añadir el cliente a la entrada ahora!"
 "cancel" = "❌ ¡Proceso cancelado! \n\nPuedes /start de nuevo en cualquier momento. 🔄"
 "error_add_client" = "⚠️ Error:\n\n {{ .error }}"
diff --git a/web/translation/translate.fa_IR.toml b/web/translation/translate.fa_IR.toml
index 0dee6dc3..0fff3ea8 100644
--- a/web/translation/translate.fa_IR.toml
+++ b/web/translation/translate.fa_IR.toml
@@ -578,7 +578,8 @@
 "id_prompt" = "🔑 شناسه پیش‌فرض: {{ .ClientId }}\n\nشناسه خود را وارد کنید."
 "email_prompt" = "📧 ایمیل پیش‌فرض: {{ .ClientEmail }}\n\nایمیل خود را وارد کنید."
 "comment_prompt" = "💬 کامنت پیش‌فرض: {{ .ClientComment }}\n\nکامنت خود را وارد کنید."
-"inbound_client_data" = "🔄 ورودی: {{ .InboundRemark }}\n\n🔑 شناسه: {{ .ClientId }}\n📧 ایمیل: {{ .ClientEmail }}\n💬 کامنت: {{ .ClientComment }}\n\nهم‌اکنون می‌توانید مشتری را به ورودی اضافه کنید!"
+"inbound_client_data_id" = "🔄 Inbound: {{ .InboundRemark }}\n\n🔑 شناسه: {{ .ClientId }}\n📧 ایمیل: {{ .ClientEmail }}\n💬 نظر: {{ .ClientComment }}\n\nاکنون می‌توانید مشتری را به inbound اضافه کنید!"
+"inbound_client_data_pass" = "🔄 Inbound: {{ .InboundRemark }}\n\n🔑 رمز عبور: {{ .ClientPass }}\n📧 ایمیل: {{ .ClientEmail }}\n💬 نظر: {{ .ClientComment }}\n\nاکنون می‌توانید مشتری را به inbound اضافه کنید!"
 "client_data" = "🔑 شناسه: {{ .ClientId }}\n📧 ایمیل: {{ .ClientEmail }}\n💬 کامنت: {{ .ClientComment }}\n\nهم‌اکنون می‌توانید مشتری را به ورودی اضافه کنید!"
 "cancel" = "❌ فرآیند لغو شد! \n\nشما می‌توانید هر زمان دوباره /start کنید. 🔄"
 "error_add_client" = "⚠️ خطا:\n\n {{ .error }}"
diff --git a/web/translation/translate.id_ID.toml b/web/translation/translate.id_ID.toml
index 70fb9c46..ff787fb7 100644
--- a/web/translation/translate.id_ID.toml
+++ b/web/translation/translate.id_ID.toml
@@ -578,7 +578,8 @@
 "id_prompt" = "🔑 ID default: {{ .ClientId }}\n\nMasukkan ID Anda."
 "email_prompt" = "📧 Email default: {{ .ClientEmail }}\n\nMasukkan email Anda."
 "comment_prompt" = "💬 Komentar default: {{ .ClientComment }}\n\nMasukkan komentar Anda."
-"inbound_client_data" = "🔄 Masuk: {{ .InboundRemark }}\n\n🔑 ID: {{ .ClientId }}\n📧 Email: {{ .ClientEmail }}\n💬 Komentar: {{ .ClientComment }}\n\nSekarang Anda bisa menambahkan klien ke inbound!"
+"inbound_client_data_id" = "🔄 Inbound: {{ .InboundRemark }}\n\n🔑 ID: {{ .ClientId }}\n📧 Email: {{ .ClientEmail }}\n💬 Komentar: {{ .ClientComment }}\n\nSekarang Anda dapat menambahkan klien ke inbound!"
+"inbound_client_data_pass" = "🔄 Inbound: {{ .InboundRemark }}\n\n🔑 Kata Sandi: {{ .ClientPass }}\n📧 Email: {{ .ClientEmail }}\n💬 Komentar: {{ .ClientComment }}\n\nSekarang Anda dapat menambahkan klien ke inbound!"
 "client_data" = "🔑 ID: {{ .ClientId }}\n📧 Email: {{ .ClientEmail }}\n💬 Komentar: {{ .ClientComment }}\n\nSekarang Anda bisa menambahkan klien ke inbound!"
 "cancel" = "❌ Proses dibatalkan! \n\nAnda bisa /start lagi kapan saja. 🔄"
 "error_add_client" = "⚠️ Kesalahan:\n\n {{ .error }}"
diff --git a/web/translation/translate.ja_JP.toml b/web/translation/translate.ja_JP.toml
index f70790e1..4f629ad7 100644
--- a/web/translation/translate.ja_JP.toml
+++ b/web/translation/translate.ja_JP.toml
@@ -578,7 +578,8 @@
 "id_prompt" = "🔑 デフォルトID: {{ .ClientId }}\n\nIDを入力してください。"
 "email_prompt" = "📧 デフォルトメール: {{ .ClientEmail }}\n\nメールアドレスを入力してください。"
 "comment_prompt" = "💬 デフォルトコメント: {{ .ClientComment }}\n\nコメントを入力してください。"
-"inbound_client_data" = "🔄 受信データ: {{ .InboundRemark }}\n\n🔑 ID: {{ .ClientId }}\n📧 メール: {{ .ClientEmail }}\n💬 コメント: {{ .ClientComment }}\n\nクライアントを受信リストに追加できます!"
+"inbound_client_data_id" = "🔄 Inbound: {{ .InboundRemark }}\n\n🔑 ID: {{ .ClientId }}\n📧 メール: {{ .ClientEmail }}\n💬 コメント: {{ .ClientComment }}\n\n今すぐクライアントをInboundに追加できます!"
+"inbound_client_data_pass" = "🔄 Inbound: {{ .InboundRemark }}\n\n🔑 パスワード: {{ .ClientPass }}\n📧 メール: {{ .ClientEmail }}\n💬 コメント: {{ .ClientComment }}\n\n今すぐクライアントをInboundに追加できます!"
 "client_data" = "🔑 ID: {{ .ClientId }}\n📧 メール: {{ .ClientEmail }}\n💬 コメント: {{ .ClientComment }}\n\nクライアントを受信リストに追加できます!"
 "cancel" = "❌ 処理がキャンセルされました! \n\nいつでも/startでやり直せます。 🔄"
 "error_add_client" = "⚠️ エラー:\n\n {{ .error }}"
diff --git a/web/translation/translate.pt_BR.toml b/web/translation/translate.pt_BR.toml
index 3365bd40..d3a745d9 100644
--- a/web/translation/translate.pt_BR.toml
+++ b/web/translation/translate.pt_BR.toml
@@ -578,7 +578,8 @@
 "id_prompt" = "🔑 ID padrão: {{ .ClientId }}\n\nDigite seu ID."
 "email_prompt" = "📧 E-mail padrão: {{ .ClientEmail }}\n\nDigite seu e-mail."
 "comment_prompt" = "💬 Comentário padrão: {{ .ClientComment }}\n\nDigite seu comentário."
-"inbound_client_data" = "🔄 Entrada: {{ .InboundRemark }}\n\n🔑 ID: {{ .ClientId }}\n📧 E-mail: {{ .ClientEmail }}\n💬 Comentário: {{ .ClientComment }}\n\nVocê pode adicionar o cliente à entrada agora!"
+"inbound_client_data_id" = "🔄 Inbound: {{ .InboundRemark }}\n\n🔑 ID: {{ .ClientId }}\n📧 Email: {{ .ClientEmail }}\n💬 Comentário: {{ .ClientComment }}\n\nAgora você pode adicionar o cliente ao inbound!"
+"inbound_client_data_pass" = "🔄 Inbound: {{ .InboundRemark }}\n\n🔑 Senha: {{ .ClientPass }}\n📧 Email: {{ .ClientEmail }}\n💬 Comentário: {{ .ClientComment }}\n\nAgora você pode adicionar o cliente ao inbound!"
 "client_data" = "🔑 ID: {{ .ClientId }}\n📧 E-mail: {{ .ClientEmail }}\n💬 Comentário: {{ .ClientComment }}\n\nVocê pode adicionar o cliente à entrada agora!"
 "cancel" = "❌ Processo cancelado! \n\nVocê pode /start novamente a qualquer momento. 🔄"
 "error_add_client" = "⚠️ Erro:\n\n {{ .error }}"
diff --git a/web/translation/translate.ru_RU.toml b/web/translation/translate.ru_RU.toml
index 59366148..b97c6c97 100644
--- a/web/translation/translate.ru_RU.toml
+++ b/web/translation/translate.ru_RU.toml
@@ -578,7 +578,8 @@
 "id_prompt" = "🔑 Стандартный ID: {{ .ClientId }}\n\nВведите ваш ID."
 "email_prompt" = "📧 Стандартный email: {{ .ClientEmail }}\n\nВведите ваш email."
 "comment_prompt" = "💬 Стандартный комментарий: {{ .ClientComment }}\n\nВведите ваш комментарий."
-"inbound_client_data" = "🔄 Входящие: {{ .InboundRemark }}\n\n🔑 ID: {{ .ClientId }}\n📧 Email: {{ .ClientEmail }}\n💬 Комментарий: {{ .ClientComment }}\n\nТеперь вы можете добавить клиента в входящие!"
+"inbound_client_data_id" = "🔄 Inbound: {{ .InboundRemark }}\n\n🔑 ID: {{ .ClientId }}\n📧 Электронная почта: {{ .ClientEmail }}\n💬 Комментарий: {{ .ClientComment }}\n\nТеперь вы можете добавить клиента в inbound!"
+"inbound_client_data_pass" = "🔄 Inbound: {{ .InboundRemark }}\n\n🔑 Пароль: {{ .ClientPass }}\n📧 Электронная почта: {{ .ClientEmail }}\n💬 Комментарий: {{ .ClientComment }}\n\nТеперь вы можете добавить клиента в inbound!"
 "client_data" = "🔑 ID: {{ .ClientId }}\n📧 Email: {{ .ClientEmail }}\n💬 Комментарий: {{ .ClientComment }}\n\nТеперь вы можете добавить клиента в входящие!"
 "cancel" = "❌ Процесс отменен! \n\nВы можете снова запустить /start в любое время. 🔄"
 "error_add_client" = "⚠️ Ошибка:\n\n {{ .error }}"
diff --git a/web/translation/translate.tr_TR.toml b/web/translation/translate.tr_TR.toml
index 3e0fdc12..851c1ad6 100644
--- a/web/translation/translate.tr_TR.toml
+++ b/web/translation/translate.tr_TR.toml
@@ -578,7 +578,8 @@
 "id_prompt" = "🔑 Varsayılan ID: {{ .ClientId }}\n\nID'nizi girin."
 "email_prompt" = "📧 Varsayılan E-posta: {{ .ClientEmail }}\n\nE-posta adresinizi girin."
 "comment_prompt" = "💬 Varsayılan Yorum: {{ .ClientComment }}\n\nYorumunuzu girin."
-"inbound_client_data" = "🔄 Giriş: {{ .InboundRemark }}\n\n🔑 ID: {{ .ClientId }}\n📧 E-posta: {{ .ClientEmail }}\n💬 Yorum: {{ .ClientComment }}\n\nŞimdi müşteri girişine ekleyebilirsiniz!"
+"inbound_client_data_id" = "🔄 Inbound: {{ .InboundRemark }}\n\n🔑 ID: {{ .ClientId }}\n📧 E-posta: {{ .ClientEmail }}\n💬 Yorum: {{ .ClientComment }}\n\nŞimdi müşteriyi inbound'a ekleyebilirsiniz!"
+"inbound_client_data_pass" = "🔄 Inbound: {{ .InboundRemark }}\n\n🔑 Şifre: {{ .ClientPass }}\n📧 E-posta: {{ .ClientEmail }}\n💬 Yorum: {{ .ClientComment }}\n\nŞimdi müşteriyi inbound'a ekleyebilirsiniz!"
 "client_data" = "🔑 ID: {{ .ClientId }}\n📧 E-posta: {{ .ClientEmail }}\n💬 Yorum: {{ .ClientComment }}\n\nŞimdi müşteri girişine ekleyebilirsiniz!"
 "cancel" = "❌ İşlem iptal edildi! \n\nİstediğiniz zaman /start komutunu tekrar verebilirsiniz. 🔄"
 "error_add_client" = "⚠️ Hata:\n\n {{ .error }}"
diff --git a/web/translation/translate.uk_UA.toml b/web/translation/translate.uk_UA.toml
index 66b5217c..80dd1c98 100644
--- a/web/translation/translate.uk_UA.toml
+++ b/web/translation/translate.uk_UA.toml
@@ -578,7 +578,8 @@
 "id_prompt" = "🔑 За замовчуванням ID: {{ .ClientId }}\n\nВведіть ваш ID."
 "email_prompt" = "📧 За замовчуванням Email: {{ .ClientEmail }}\n\nВведіть ваш email."
 "comment_prompt" = "💬 За замовчуванням коментар: {{ .ClientComment }}\n\nВведіть ваш коментар."
-"inbound_client_data" = "🔄 Вхідні дані: {{ .InboundRemark }}\n\n🔑 ID: {{ .ClientId }}\n📧 Email: {{ .ClientEmail }}\n💬 Коментар: {{ .ClientComment }}\n\nЗараз ви можете додати клієнта до вхідних!"
+"inbound_client_data_id" = "🔄 Inbound: {{ .InboundRemark }}\n\n🔑 ID: {{ .ClientId }}\n📧 Електронна пошта: {{ .ClientEmail }}\n💬 Коментар: {{ .ClientComment }}\n\nТепер ви можете додати клієнта до inbound!"
+"inbound_client_data_pass" = "🔄 Inbound: {{ .InboundRemark }}\n\n🔑 Пароль: {{ .ClientPass }}\n📧 Електронна пошта: {{ .ClientEmail }}\n💬 Коментар: {{ .ClientComment }}\n\nТепер ви можете додати клієнта до inbound!"
 "client_data" = "🔑 ID: {{ .ClientId }}\n📧 Email: {{ .ClientEmail }}\n💬 Коментар: {{ .ClientComment }}\n\nЗараз ви можете додати клієнта до вхідних!"
 "cancel" = "❌ Процес скасовано! \n\nВи можете /start знову в будь-який час. 🔄"
 "error_add_client" = "⚠️ Помилка:\n\n {{ .error }}"
diff --git a/web/translation/translate.vi_VN.toml b/web/translation/translate.vi_VN.toml
index 5131c9f8..11ffb6dd 100644
--- a/web/translation/translate.vi_VN.toml
+++ b/web/translation/translate.vi_VN.toml
@@ -578,7 +578,8 @@
 "id_prompt" = "🔑 ID mặc định: {{ .ClientId }}\n\nNhập ID của bạn."
 "email_prompt" = "📧 Email mặc định: {{ .ClientEmail }}\n\nNhập email của bạn."
 "comment_prompt" = "💬 Bình luận mặc định: {{ .ClientComment }}\n\nNhập bình luận của bạn."
-"inbound_client_data" = "🔄 Dữ liệu đến: {{ .InboundRemark }}\n\n🔑 ID: {{ .ClientId }}\n📧 Email: {{ .ClientEmail }}\n💬 Bình luận: {{ .ClientComment }}\n\nBây giờ bạn có thể thêm khách hàng vào danh sách đến!"
+"inbound_client_data_id" = "🔄 Inbound: {{ .InboundRemark }}\n\n🔑 ID: {{ .ClientId }}\n📧 Email: {{ .ClientEmail }}\n💬 Bình luận: {{ .ClientComment }}\n\nBây giờ bạn có thể thêm khách hàng vào inbound!"
+"inbound_client_data_pass" = "🔄 Inbound: {{ .InboundRemark }}\n\n🔑 Mật khẩu: {{ .ClientPass }}\n📧 Email: {{ .ClientEmail }}\n💬 Bình luận: {{ .ClientComment }}\n\nBây giờ bạn có thể thêm khách hàng vào inbound!"
 "client_data" = "🔑 ID: {{ .ClientId }}\n📧 Email: {{ .ClientEmail }}\n💬 Bình luận: {{ .ClientComment }}\n\nBây giờ bạn có thể thêm khách hàng vào danh sách đến!"
 "cancel" = "❌ Quá trình bị hủy! \n\nBạn có thể /start lại bất cứ lúc nào. 🔄"
 "error_add_client" = "⚠️ Lỗi:\n\n {{ .error }}"
diff --git a/web/translation/translate.zh_CN.toml b/web/translation/translate.zh_CN.toml
index d56fd43e..da2d9380 100644
--- a/web/translation/translate.zh_CN.toml
+++ b/web/translation/translate.zh_CN.toml
@@ -578,7 +578,8 @@
 "id_prompt" = "🔑 默认ID: {{ .ClientId }}\n\n请输入您的ID。"
 "email_prompt" = "📧 默认邮件: {{ .ClientEmail }}\n\n请输入您的邮箱。"
 "comment_prompt" = "💬 默认评论: {{ .ClientComment }}\n\n请输入您的评论。"
-"inbound_client_data" = "🔄 入站数据: {{ .InboundRemark }}\n\n🔑 ID: {{ .ClientId }}\n📧 邮件: {{ .ClientEmail }}\n💬 评论: {{ .ClientComment }}\n\n现在您可以将客户添加到入站!"
+"inbound_client_data_id" = "🔄 Inbound: {{ .InboundRemark }}\n\n🔑 ID: {{ .ClientId }}\n📧 电子邮件: {{ .ClientEmail }}\n💬 评论: {{ .ClientComment }}\n\n现在您可以将客户添加到inbound!"
+"inbound_client_data_pass" = "🔄 Inbound: {{ .InboundRemark }}\n\n🔑 密码: {{ .ClientPass }}\n📧 电子邮件: {{ .ClientEmail }}\n💬 评论: {{ .ClientComment }}\n\n现在您可以将客户添加到inbound!"
 "client_data" = "🔑 ID: {{ .ClientId }}\n📧 邮件: {{ .ClientEmail }}\n💬 评论: {{ .ClientComment }}\n\n现在您可以将客户添加到入站!"
 "cancel" = "❌ 过程已取消! \n\n您可以随时 /start 重新开始。 🔄"
 "error_add_client" = "⚠️ 错误:\n\n {{ .error }}"
diff --git a/web/translation/translate.zh_TW.toml b/web/translation/translate.zh_TW.toml
index 2938c7c8..69dfc847 100644
--- a/web/translation/translate.zh_TW.toml
+++ b/web/translation/translate.zh_TW.toml
@@ -578,7 +578,8 @@
 "id_prompt" = "🔑 預設ID: {{ .ClientId }}\n\n請輸入您的ID。"
 "email_prompt" = "📧 預設電子郵件: {{ .ClientEmail }}\n\n請輸入您的電子郵件。"
 "comment_prompt" = "💬 預設評論: {{ .ClientComment }}\n\n請輸入您的評論。"
-"inbound_client_data" = "🔄 進站數據: {{ .InboundRemark }}\n\n🔑 ID: {{ .ClientId }}\n📧 電子郵件: {{ .ClientEmail }}\n💬 評論: {{ .ClientComment }}\n\n您現在可以將客戶加入進站!"
+"inbound_client_data_id" = "🔄 Inbound: {{ .InboundRemark }}\n\n🔑 ID: {{ .ClientId }}\n📧 電子郵件: {{ .ClientEmail }}\n💬 註解: {{ .ClientComment }}\n\n現在您可以將客戶添加到inbound!"
+"inbound_client_data_pass" = "🔄 Inbound: {{ .InboundRemark }}\n\n🔑 密碼: {{ .ClientPass }}\n📧 電子郵件: {{ .ClientEmail }}\n💬 註解: {{ .ClientComment }}\n\n現在您可以將客戶添加到inbound!"
 "client_data" = "🔑 ID: {{ .ClientId }}\n📧 電子郵件: {{ .ClientEmail }}\n💬 評論: {{ .ClientComment }}\n\n您現在可以將客戶加入進站!"
 "cancel" = "❌ 處理已取消! \n\n您隨時可以 /start 再次開始。 🔄"
 "error_add_client" = "⚠️ 錯誤:\n\n {{ .error }}"

From f77fb6f2e26ae89ae3b6c64516db8a0d3ddead9d Mon Sep 17 00:00:00 2001
From: nistootsin <104831639+nistootsin@users.noreply.github.com>
Date: Mon, 17 Mar 2025 13:14:59 +0330
Subject: [PATCH 6/7] - handle password input rather than id for shadow and
 trojan protocols

---
 web/service/tgbot.go                 | 106 +++++++++++++++++++++++----
 web/translation/translate.en_US.toml |   7 +-
 web/translation/translate.es_ES.toml |  18 +++--
 web/translation/translate.fa_IR.toml |  18 +++--
 web/translation/translate.id_ID.toml |  26 ++++---
 web/translation/translate.ja_JP.toml |  26 ++++---
 web/translation/translate.pt_BR.toml |  14 ++--
 web/translation/translate.ru_RU.toml |  14 ++--
 web/translation/translate.tr_TR.toml |  18 +++--
 web/translation/translate.uk_UA.toml |  22 +++---
 web/translation/translate.vi_VN.toml |  16 ++--
 web/translation/translate.zh_CN.toml |  18 +++--
 web/translation/translate.zh_TW.toml |  18 +++--
 13 files changed, 224 insertions(+), 97 deletions(-)

diff --git a/web/service/tgbot.go b/web/service/tgbot.go
index 543f93c4..e7975460 100644
--- a/web/service/tgbot.go
+++ b/web/service/tgbot.go
@@ -280,6 +280,28 @@ func (t *Tgbot) OnReceive() {
 					),
 				)
 				t.SendMsgToTgbot(message.Chat.ID, t.I18nBot("tgbot.messages.email_prompt", "ClientEmail=="+client_Email), cancel_btn_markup)
+			case "awaiting_password_tr":
+				client_TrPassword = message.Text
+				userStates[message.Chat.ID] = "awaiting_email" 
+				t.SendMsgToTgbot(message.Chat.ID, t.I18nBot("tgbot.messages.received_password", "ClientPass=="+client_TrPassword), tu.ReplyKeyboardRemove())
+				cancel_btn_markup := tu.InlineKeyboard(
+					tu.InlineKeyboardRow(
+						tu.InlineKeyboardButton(t.I18nBot("tgbot.buttons.use_default")).WithCallbackData("default_client_email"),
+						tu.InlineKeyboardButton(t.I18nBot("tgbot.buttons.cancel")).WithCallbackData("add_client_cancel"),
+					),
+				)
+				t.SendMsgToTgbot(message.Chat.ID, t.I18nBot("tgbot.messages.email_prompt", "ClientEmail=="+client_Email), cancel_btn_markup)
+			case "awaiting_password_sh":
+				client_ShPassword = message.Text
+				userStates[message.Chat.ID] = "awaiting_email" 
+				t.SendMsgToTgbot(message.Chat.ID, t.I18nBot("tgbot.messages.received_password", "ClientPass=="+client_ShPassword), tu.ReplyKeyboardRemove())
+				cancel_btn_markup := tu.InlineKeyboard(
+					tu.InlineKeyboardRow(
+						tu.InlineKeyboardButton(t.I18nBot("tgbot.buttons.use_default")).WithCallbackData("default_client_email"),
+						tu.InlineKeyboardButton(t.I18nBot("tgbot.buttons.cancel")).WithCallbackData("add_client_cancel"),
+					),
+				)
+				t.SendMsgToTgbot(message.Chat.ID, t.I18nBot("tgbot.messages.email_prompt", "ClientEmail=="+client_Email), cancel_btn_markup)
 			case "awaiting_email":
 				client_Email = message.Text
 				userStates[message.Chat.ID] = "awaiting_comment" 
@@ -294,7 +316,7 @@ func (t *Tgbot) OnReceive() {
 			case "awaiting_comment":
 				client_Comment = message.Text
 				t.SendMsgToTgbot(message.Chat.ID, t.I18nBot("tgbot.messages.received_comment", "ClientComment=="+client_Comment), tu.ReplyKeyboardRemove())
-				message_text := t.I18nBot("tgbot.messages.client_data", "ClientId=="+client_Id,"ClientEmail=="+client_Email,"ClientComment=="+client_Comment)
+				message_text, _ := t.BuildClientDataMessage()
 
 				inlineKeyboard := tu.InlineKeyboard(
 					tu.InlineKeyboardRow(
@@ -966,9 +988,9 @@ func (t *Tgbot) answerCallback(callbackQuery *telego.CallbackQuery, isAdmin bool
 					return
 				}
 				
-				message, err := t.BuildInboundClientDataMessage(inbound.Remark, inbound.Protocol)
+				message_text, err := t.BuildInboundClientDataMessage(inbound.Remark, inbound.Protocol)
 				
-				t.addClient(chatId, message)
+				t.addClient(chatId, message_text)
 			}
 			return
 		} else {
@@ -1048,15 +1070,20 @@ func (t *Tgbot) answerCallback(callbackQuery *telego.CallbackQuery, isAdmin bool
 		t.sendCallbackAnswerTgBot(callbackQuery.ID, t.I18nBot("tgbot.buttons.addClient"))
 		t.SendMsgToTgbot(chatId, t.I18nBot("tgbot.answers.chooseInbound"), inbounds)
 	case "add_client_ch_default":
+		var prompt_state string
+		var prompt_message string
+
+
+		prompt_state ,prompt_message, _ = t.BuildClientChDefaultResponse()
 		cancel_btn_markup := tu.InlineKeyboard(
 			tu.InlineKeyboardRow(
-				tu.InlineKeyboardButton(t.I18nBot("tgbot.buttons.use_default")).WithCallbackData("default_client_id"),
+				tu.InlineKeyboardButton(t.I18nBot("tgbot.buttons.use_default")).WithCallbackData("default_client_id_pass"),
 				tu.InlineKeyboardButton(t.I18nBot("tgbot.buttons.cancel")).WithCallbackData("add_client_cancel"),
 			),
 		)
-		t.SendMsgToTgbot(chatId, t.I18nBot("tgbot.messages.id_prompt", "ClientId=="+client_Id),cancel_btn_markup)
-		userStates[chatId] = "awaiting_id"
-	case "default_client_id":
+		t.SendMsgToTgbot(chatId, prompt_message,cancel_btn_markup)
+		userStates[chatId] = prompt_state
+	case "default_client_id_pass":
 		cancel_btn_markup := tu.InlineKeyboard(
 			tu.InlineKeyboardRow(
 				tu.InlineKeyboardButton(t.I18nBot("tgbot.buttons.use_default")).WithCallbackData("default_client_email"),
@@ -1075,7 +1102,7 @@ func (t *Tgbot) answerCallback(callbackQuery *telego.CallbackQuery, isAdmin bool
 		t.SendMsgToTgbot(chatId, t.I18nBot("tgbot.messages.comment_prompt", "ClientComment=="+client_Comment),inlineKeyboard)
 		userStates[chatId] = "awaiting_comment"
 	case "default_client_comment":
-		message_text := t.I18nBot("tgbot.messages.client_data", "ClientId=="+client_Id,"ClientEmail=="+client_Email,"ClientComment=="+client_Comment)
+		message_text, _ := t.BuildClientDataMessage()
 
 		inlineKeyboard := tu.InlineKeyboard(
 			tu.InlineKeyboardRow(
@@ -1112,16 +1139,41 @@ func (t *Tgbot) answerCallback(callbackQuery *telego.CallbackQuery, isAdmin bool
 	}
 }
 
+
+func (t *Tgbot) BuildClientChDefaultResponse() (string,string,error) {
+
+	inbound, err := t.inboundService.GetInbound(receiver_inbound_ID)
+	if err != nil {
+		logger.Warning("getIboundClients run failed:", err)
+		return "", "",errors.New(t.I18nBot("tgbot.answers.getInboundsFailed"))
+	}
+
+	protocol := inbound.Protocol
+
+    switch protocol {
+    case model.VMESS, model.VLESS:
+		prompt := t.I18nBot("tgbot.messages.id_prompt", "ClientId=="+client_Id)
+		return "awaiting_id", prompt,errors.New("unknown protocol")
+	case model.Trojan:
+		prompt := t.I18nBot("tgbot.messages.pass_prompt", "ClientPassword=="+client_TrPassword)
+		return "awaiting_password_tr", prompt,errors.New("unknown protocol")
+    case model.Shadowsocks:
+		prompt := t.I18nBot("tgbot.messages.pass_prompt", "ClientPassword=="+client_ShPassword)
+		return "awaiting_password_sh", prompt,errors.New("unknown protocol")
+    default:
+        return "","", errors.New("unknown protocol")
+    }
+}
+
+
 func (t *Tgbot) BuildInboundClientDataMessage(inbound_remark string ,protocol model.Protocol) (string, error) {
     var message string
 
     switch protocol {
-    case model.VMESS:
+    case model.VMESS, model.VLESS:
         message = t.I18nBot("tgbot.messages.inbound_client_data_id", "InboundRemark=="+inbound_remark,"ClientId=="+client_Id,"ClientEmail=="+client_Email,"ClientComment=="+client_Comment)
-    case model.VLESS:
-        message = t.I18nBot("tgbot.messages.inbound_client_data_id", "InboundRemark=="+inbound_remark,"ClientId=="+client_Id,"ClientEmail=="+client_Email,"ClientComment=="+client_Comment)
-
-    case model.Trojan:
+    
+	case model.Trojan:
         message = t.I18nBot("tgbot.messages.inbound_client_data_pass", "InboundRemark=="+inbound_remark,"ClientPass=="+client_TrPassword,"ClientEmail=="+client_Email,"ClientComment=="+client_Comment)
 
     case model.Shadowsocks:
@@ -1134,6 +1186,34 @@ func (t *Tgbot) BuildInboundClientDataMessage(inbound_remark string ,protocol mo
     return message, nil
 }
 
+func (t *Tgbot) BuildClientDataMessage() (string, error) {
+    var message string
+
+	inbound, err := t.inboundService.GetInbound(receiver_inbound_ID)
+	if err != nil {
+		logger.Warning("getIboundClients run failed:", err)
+		return "", errors.New(t.I18nBot("tgbot.answers.getInboundsFailed"))
+	}
+	protocol := inbound.Protocol
+
+
+    switch protocol {
+    case model.VMESS, model.VLESS:
+        message = t.I18nBot("tgbot.messages.client_data_id", "ClientId=="+client_Id,"ClientEmail=="+client_Email,"ClientComment=="+client_Comment)
+    
+	case model.Trojan:
+        message = t.I18nBot("tgbot.messages.client_data_pass", "ClientPass=="+client_TrPassword,"ClientEmail=="+client_Email,"ClientComment=="+client_Comment)
+
+    case model.Shadowsocks:
+        message = t.I18nBot("tgbot.messages.client_data_pass", "ClientPass=="+client_ShPassword,"ClientEmail=="+client_Email,"ClientComment=="+client_Comment)
+
+    default:
+        return "", errors.New("unknown protocol")
+    }
+
+    return message, nil
+}
+
 
 
 func (t *Tgbot) BuildJSONForProtocol(protocol model.Protocol) (string, error) {
diff --git a/web/translation/translate.en_US.toml b/web/translation/translate.en_US.toml
index eaaba530..bea6ea1b 100644
--- a/web/translation/translate.en_US.toml
+++ b/web/translation/translate.en_US.toml
@@ -573,17 +573,20 @@
 "no" = "❌ No"
 
 "received_id" = "🔑📥 Received ID: {{ .ClientId }}"
+"received_password" = "🔑📥 Received Password: {{ .ClientPass }}"
 "received_email" = "📧📥 Received Email: {{ .ClientEmail }}"
 "received_comment" = "💬📥 Received Comment: {{ .ClientComment }}"
 "id_prompt" = "🔑 Default ID: {{ .ClientId }}\n\nEnter your id."
+"pass_prompt" = "🔑 Default Password: {{ .ClientPassword }}\n\nEnter your password."
 "email_prompt" = "📧 Default Email: {{ .ClientEmail }}\n\nEnter your email."
 "comment_prompt" = "💬 Default Comment: {{ .ClientComment }}\n\nEnter your Comment."
 "inbound_client_data_id" = "🔄 Inbound: {{ .InboundRemark }}\n\n🔑 ID: {{ .ClientId }}\n📧 Email: {{ .ClientEmail }}\n💬 Comment: {{ .ClientComment }}\n\nYou can add the client to inbound now!"
 "inbound_client_data_pass" = "🔄 Inbound: {{ .InboundRemark }}\n\n🔑 Password: {{ .ClientPass }}\n📧 Email: {{ .ClientEmail }}\n💬 Comment: {{ .ClientComment }}\n\nYou can add the client to inbound now!"
-"client_data" = "🔑 ID: {{ .ClientId }}\n📧 Email: {{ .ClientEmail }}\n💬 Comment: {{ .ClientComment }}\n\nYou can add the client to inbound now!"
+"client_data_id" = "🔑 ID: {{ .ClientId }}\n📧 Email: {{ .ClientEmail }}\n💬 Comment: {{ .ClientComment }}\n\nYou can add the client to inbound now!"
+"client_data_pass" = "🔑 Password: {{ .ClientPass }}\n📧 Email: {{ .ClientEmail }}\n💬 Comment: {{ .ClientComment }}\n\nYou can add the client to inbound now!"
 "cancel" = "❌ Process Canceled! \n\nYou can /start again anytime. 🔄"
 "error_add_client"  = "⚠️ Error:\n\n {{ .error }}"
-"success_add_client" = "🏆 Success! You can now modify it using the 'All Clients' inline button."
+"success_add_client" = "🏆 Success! \nYou can now modify it using the 'All Clients' inline button."
 
 [tgbot.buttons]
 "closeKeyboard" = "❌ Close Keyboard"
diff --git a/web/translation/translate.es_ES.toml b/web/translation/translate.es_ES.toml
index f3eb33d2..a17f07e2 100644
--- a/web/translation/translate.es_ES.toml
+++ b/web/translation/translate.es_ES.toml
@@ -573,17 +573,21 @@
 "no" = "❌ No"
 
 "received_id" = "🔑📥 ID recibido: {{ .ClientId }}"
-"received_email" = "📧📥 Correo recibido: {{ .ClientEmail }}"
+"received_password" = "🔑📥 Contraseña recibida: {{ .ClientPass }}"
+"received_email" = "📧📥 Correo electrónico recibido: {{ .ClientEmail }}"
 "received_comment" = "💬📥 Comentario recibido: {{ .ClientComment }}"
 "id_prompt" = "🔑 ID predeterminado: {{ .ClientId }}\n\nIntroduce tu ID."
-"email_prompt" = "📧 Correo predeterminado: {{ .ClientEmail }}\n\nIntroduce tu correo."
+"pass_prompt" = "🔑 Contraseña predeterminada: {{ .ClientPassword }}\n\nIntroduce tu contraseña."
+"email_prompt" = "📧 Correo electrónico predeterminado: {{ .ClientEmail }}\n\nIntroduce tu correo electrónico."
 "comment_prompt" = "💬 Comentario predeterminado: {{ .ClientComment }}\n\nIntroduce tu comentario."
-"inbound_client_data_id" = "🔄 Inbound: {{ .InboundRemark }}\n\n🔑 ID: {{ .ClientId }}\n📧 Email: {{ .ClientEmail }}\n💬 Comment: {{ .ClientComment }}\n\n¡Ahora puedes agregar al cliente a inbound!"
-"inbound_client_data_pass" = "🔄 Inbound: {{ .InboundRemark }}\n\n🔑 Contraseña: {{ .ClientPass }}\n📧 Email: {{ .ClientEmail }}\n💬 Comment: {{ .ClientComment }}\n\n¡Ahora puedes agregar al cliente a inbound!"
-"client_data" = "🔑 ID: {{ .ClientId }}\n📧 Correo: {{ .ClientEmail }}\n💬 Comentario: {{ .ClientComment }}\n\n¡Puedes añadir el cliente a la entrada ahora!"
-"cancel" = "❌ ¡Proceso cancelado! \n\nPuedes /start de nuevo en cualquier momento. 🔄"
+"inbound_client_data_id" = "🔄 Inbound: {{ .InboundRemark }}\n\n🔑 ID: {{ .ClientId }}\n📧 Correo electrónico: {{ .ClientEmail }}\n💬 Comentario: {{ .ClientComment }}\n\n¡Ahora puedes agregar al cliente a inbound!"
+"inbound_client_data_pass" = "🔄 Inbound: {{ .InboundRemark }}\n\n🔑 Contraseña: {{ .ClientPass }}\n📧 Correo electrónico: {{ .ClientEmail }}\n💬 Comentario: {{ .ClientComment }}\n\n¡Ahora puedes agregar al cliente a inbound!"
+"client_data_id" = "🔑 ID: {{ .ClientId }}\n📧 Correo electrónico: {{ .ClientEmail }}\n💬 Comentario: {{ .ClientComment }}\n\n¡Ahora puedes agregar al cliente a inbound!"
+"client_data_pass" = "🔑 Contraseña: {{ .ClientPass }}\n📧 Correo electrónico: {{ .ClientEmail }}\n💬 Comentario: {{ .ClientComment }}\n\n¡Ahora puedes agregar al cliente a inbound!"
+"cancel" = "❌ ¡Proceso cancelado! \n\nPuedes usar /start en cualquier momento. 🔄"
 "error_add_client" = "⚠️ Error:\n\n {{ .error }}"
-"success_add_client" = "🏆 ¡Éxito! Ahora puedes modificarlo usando el botón en línea 'All Clients'."
+"success_add_client" = "🏆 ¡Éxito! \nAhora puedes modificarlo usando el botón en línea 'Todos los Clientes'."
+
 
 [tgbot.buttons]
 "closeKeyboard" = "❌ Cerrar Teclado"
diff --git a/web/translation/translate.fa_IR.toml b/web/translation/translate.fa_IR.toml
index 0fff3ea8..e5649811 100644
--- a/web/translation/translate.fa_IR.toml
+++ b/web/translation/translate.fa_IR.toml
@@ -573,17 +573,21 @@
 "no" = "❌ خیر"
 
 "received_id" = "🔑📥 شناسه دریافت شده: {{ .ClientId }}"
+"received_password" = "🔑📥 رمز عبور دریافت شده: {{ .ClientPass }}"
 "received_email" = "📧📥 ایمیل دریافت شده: {{ .ClientEmail }}"
-"received_comment" = "💬📥 کامنت دریافت شده: {{ .ClientComment }}"
+"received_comment" = "💬📥 نظر دریافت شده: {{ .ClientComment }}"
 "id_prompt" = "🔑 شناسه پیش‌فرض: {{ .ClientId }}\n\nشناسه خود را وارد کنید."
+"pass_prompt" = "🔑 رمز عبور پیش‌فرض: {{ .ClientPassword }}\n\nرمز عبور خود را وارد کنید."
 "email_prompt" = "📧 ایمیل پیش‌فرض: {{ .ClientEmail }}\n\nایمیل خود را وارد کنید."
-"comment_prompt" = "💬 کامنت پیش‌فرض: {{ .ClientComment }}\n\nکامنت خود را وارد کنید."
-"inbound_client_data_id" = "🔄 Inbound: {{ .InboundRemark }}\n\n🔑 شناسه: {{ .ClientId }}\n📧 ایمیل: {{ .ClientEmail }}\n💬 نظر: {{ .ClientComment }}\n\nاکنون می‌توانید مشتری را به inbound اضافه کنید!"
-"inbound_client_data_pass" = "🔄 Inbound: {{ .InboundRemark }}\n\n🔑 رمز عبور: {{ .ClientPass }}\n📧 ایمیل: {{ .ClientEmail }}\n💬 نظر: {{ .ClientComment }}\n\nاکنون می‌توانید مشتری را به inbound اضافه کنید!"
-"client_data" = "🔑 شناسه: {{ .ClientId }}\n📧 ایمیل: {{ .ClientEmail }}\n💬 کامنت: {{ .ClientComment }}\n\nهم‌اکنون می‌توانید مشتری را به ورودی اضافه کنید!"
-"cancel" = "❌ فرآیند لغو شد! \n\nشما می‌توانید هر زمان دوباره /start کنید. 🔄"
+"comment_prompt" = "💬 نظر پیش‌فرض: {{ .ClientComment }}\n\nنظر خود را وارد کنید."
+"inbound_client_data_id" = "🔄 ورودی: {{ .InboundRemark }}\n\n🔑 شناسه: {{ .ClientId }}\n📧 ایمیل: {{ .ClientEmail }}\n💬 نظر: {{ .ClientComment }}\n\nاکنون می‌توانید مشتری را به ورودی اضافه کنید!"
+"inbound_client_data_pass" = "🔄 ورودی: {{ .InboundRemark }}\n\n🔑 رمز عبور: {{ .ClientPass }}\n📧 ایمیل: {{ .ClientEmail }}\n💬 نظر: {{ .ClientComment }}\n\nاکنون می‌توانید مشتری را به ورودی اضافه کنید!"
+"client_data_id" = "🔑 شناسه: {{ .ClientId }}\n📧 ایمیل: {{ .ClientEmail }}\n💬 نظر: {{ .ClientComment }}\n\nاکنون می‌توانید مشتری را به ورودی اضافه کنید!"
+"client_data_pass" = "🔑 رمز عبور: {{ .ClientPass }}\n📧 ایمیل: {{ .ClientEmail }}\n💬 نظر: {{ .ClientComment }}\n\nاکنون می‌توانید مشتری را به ورودی اضافه کنید!"
+"cancel" = "❌ فرایند لغو شد! \n\nشما می‌توانید هر زمان که خواستید /start را اجرا کنید. 🔄"
 "error_add_client" = "⚠️ خطا:\n\n {{ .error }}"
-"success_add_client" = "🏆 موفقیت! اکنون می‌توانید آن را با استفاده از دکمه 'All Clients' تغییر دهید."
+"success_add_client" = "🏆 موفقیت! اکنون می‌توانید آن را از طریق دکمه 'همه مشتریان' ویرایش کنید."
+
 
 [tgbot.buttons]
 "closeKeyboard" = "❌ بستن کیبورد"
diff --git a/web/translation/translate.id_ID.toml b/web/translation/translate.id_ID.toml
index ff787fb7..bcf733be 100644
--- a/web/translation/translate.id_ID.toml
+++ b/web/translation/translate.id_ID.toml
@@ -572,18 +572,22 @@
 "no" = "❌ Tidak"
 
 
-"received_id" = "🔑📥 ID diterima: {{ .ClientId }}"
-"received_email" = "📧📥 Email diterima: {{ .ClientEmail }}"
-"received_comment" = "💬📥 Komentar diterima: {{ .ClientComment }}"
-"id_prompt" = "🔑 ID default: {{ .ClientId }}\n\nMasukkan ID Anda."
-"email_prompt" = "📧 Email default: {{ .ClientEmail }}\n\nMasukkan email Anda."
-"comment_prompt" = "💬 Komentar default: {{ .ClientComment }}\n\nMasukkan komentar Anda."
-"inbound_client_data_id" = "🔄 Inbound: {{ .InboundRemark }}\n\n🔑 ID: {{ .ClientId }}\n📧 Email: {{ .ClientEmail }}\n💬 Komentar: {{ .ClientComment }}\n\nSekarang Anda dapat menambahkan klien ke inbound!"
-"inbound_client_data_pass" = "🔄 Inbound: {{ .InboundRemark }}\n\n🔑 Kata Sandi: {{ .ClientPass }}\n📧 Email: {{ .ClientEmail }}\n💬 Komentar: {{ .ClientComment }}\n\nSekarang Anda dapat menambahkan klien ke inbound!"
-"client_data" = "🔑 ID: {{ .ClientId }}\n📧 Email: {{ .ClientEmail }}\n💬 Komentar: {{ .ClientComment }}\n\nSekarang Anda bisa menambahkan klien ke inbound!"
-"cancel" = "❌ Proses dibatalkan! \n\nAnda bisa /start lagi kapan saja. 🔄"
+"received_id" = "🔑📥 ID yang diterima: {{ .ClientId }}"
+"received_password" = "🔑📥 Kata sandi yang diterima: {{ .ClientPass }}"
+"received_email" = "📧📥 Email yang diterima: {{ .ClientEmail }}"
+"received_comment" = "💬📥 Komentar yang diterima: {{ .ClientComment }}"
+"id_prompt" = "🔑 ID Default: {{ .ClientId }}\n\nMasukkan ID Anda."
+"pass_prompt" = "🔑 Kata Sandi Default: {{ .ClientPassword }}\n\nMasukkan kata sandi Anda."
+"email_prompt" = "📧 Email Default: {{ .ClientEmail }}\n\nMasukkan email Anda."
+"comment_prompt" = "💬 Komentar Default: {{ .ClientComment }}\n\nMasukkan komentar Anda."
+"inbound_client_data_id" = "🔄 Masuk: {{ .InboundRemark }}\n\n🔑 ID: {{ .ClientId }}\n📧 Email: {{ .ClientEmail }}\n💬 Komentar: {{ .ClientComment }}\n\nAnda dapat menambahkan klien ke inbound sekarang!"
+"inbound_client_data_pass" = "🔄 Masuk: {{ .InboundRemark }}\n\n🔑 Kata Sandi: {{ .ClientPass }}\n📧 Email: {{ .ClientEmail }}\n💬 Komentar: {{ .ClientComment }}\n\nAnda dapat menambahkan klien ke inbound sekarang!"
+"client_data_id" = "🔑 ID: {{ .ClientId }}\n📧 Email: {{ .ClientEmail }}\n💬 Komentar: {{ .ClientComment }}\n\nAnda dapat menambahkan klien ke inbound sekarang!"
+"client_data_pass" = "🔑 Kata Sandi: {{ .ClientPass }}\n📧 Email: {{ .ClientEmail }}\n💬 Komentar: {{ .ClientComment }}\n\nAnda dapat menambahkan klien ke inbound sekarang!"
+"cancel" = "❌ Proses Dibatalkan! \n\nAnda dapat memulai lagi kapan saja dengan /start. 🔄"
 "error_add_client" = "⚠️ Kesalahan:\n\n {{ .error }}"
-"success_add_client" = "🏆 Sukses! Sekarang Anda dapat mengubahnya menggunakan tombol 'All Clients'."
+"success_add_client" = "🏆 Berhasil! \nSekarang Anda dapat mengeditnya menggunakan tombol 'Semua Klien'."
+
 
 [tgbot.buttons]
 "closeKeyboard" = "❌ Tutup Papan Ketik"
diff --git a/web/translation/translate.ja_JP.toml b/web/translation/translate.ja_JP.toml
index 4f629ad7..756402fc 100644
--- a/web/translation/translate.ja_JP.toml
+++ b/web/translation/translate.ja_JP.toml
@@ -572,18 +572,22 @@
 "yes" = "✅ はい"
 "no" = "❌ いいえ"
 
-"received_id" = "🔑📥 受け取ったID: {{ .ClientId }}"
-"received_email" = "📧📥 受け取ったメール: {{ .ClientEmail }}"
-"received_comment" = "💬📥 受け取ったコメント: {{ .ClientComment }}"
-"id_prompt" = "🔑 デフォルトID: {{ .ClientId }}\n\nIDを入力してください。"
-"email_prompt" = "📧 デフォルトメール: {{ .ClientEmail }}\n\nメールアドレスを入力してください。"
-"comment_prompt" = "💬 デフォルトコメント: {{ .ClientComment }}\n\nコメントを入力してください。"
-"inbound_client_data_id" = "🔄 Inbound: {{ .InboundRemark }}\n\n🔑 ID: {{ .ClientId }}\n📧 メール: {{ .ClientEmail }}\n💬 コメント: {{ .ClientComment }}\n\n今すぐクライアントをInboundに追加できます!"
-"inbound_client_data_pass" = "🔄 Inbound: {{ .InboundRemark }}\n\n🔑 パスワード: {{ .ClientPass }}\n📧 メール: {{ .ClientEmail }}\n💬 コメント: {{ .ClientComment }}\n\n今すぐクライアントをInboundに追加できます!"
-"client_data" = "🔑 ID: {{ .ClientId }}\n📧 メール: {{ .ClientEmail }}\n💬 コメント: {{ .ClientComment }}\n\nクライアントを受信リストに追加できます!"
-"cancel" = "❌ 処理がキャンセルされました! \n\nいつでも/startでやり直せます。 🔄"
+"received_id" = "🔑📥 受信したID: {{ .ClientId }}"
+"received_password" = "🔑📥 受信したパスワード: {{ .ClientPass }}"
+"received_email" = "📧📥 受信したメール: {{ .ClientEmail }}"
+"received_comment" = "💬📥 受信したコメント: {{ .ClientComment }}"
+"id_prompt" = "🔑 デフォルトのID: {{ .ClientId }}\n\nIDを入力してください。"
+"pass_prompt" = "🔑 デフォルトのパスワード: {{ .ClientPassword }}\n\nパスワードを入力してください。"
+"email_prompt" = "📧 デフォルトのメール: {{ .ClientEmail }}\n\nメールアドレスを入力してください。"
+"comment_prompt" = "💬 デフォルトのコメント: {{ .ClientComment }}\n\nコメントを入力してください。"
+"inbound_client_data_id" = "🔄 インバウンド: {{ .InboundRemark }}\n\n🔑 ID: {{ .ClientId }}\n📧 メール: {{ .ClientEmail }}\n💬 コメント: {{ .ClientComment }}\n\n今すぐクライアントをインバウンドに追加できます!"
+"inbound_client_data_pass" = "🔄 インバウンド: {{ .InboundRemark }}\n\n🔑 パスワード: {{ .ClientPass }}\n📧 メール: {{ .ClientEmail }}\n💬 コメント: {{ .ClientComment }}\n\n今すぐクライアントをインバウンドに追加できます!"
+"client_data_id" = "🔑 ID: {{ .ClientId }}\n📧 メール: {{ .ClientEmail }}\n💬 コメント: {{ .ClientComment }}\n\n今すぐクライアントをインバウンドに追加できます!"
+"client_data_pass" = "🔑 パスワード: {{ .ClientPass }}\n📧 メール: {{ .ClientEmail }}\n💬 コメント: {{ .ClientComment }}\n\n今すぐクライアントをインバウンドに追加できます!"
+"cancel" = "❌ プロセスがキャンセルされました!\n\nいつでも /start を使用できます。 🔄"
 "error_add_client" = "⚠️ エラー:\n\n {{ .error }}"
-"success_add_client" = "🏆 成功!「All Clients」ボタンを使って変更できます。"
+"success_add_client" = "🏆 成功!\n「すべてのクライアント」ボタンを使用して、編集できます。"
+
 
 [tgbot.buttons]
 "closeKeyboard" = "❌ キーボードを閉じる"
diff --git a/web/translation/translate.pt_BR.toml b/web/translation/translate.pt_BR.toml
index d3a745d9..3f237b28 100644
--- a/web/translation/translate.pt_BR.toml
+++ b/web/translation/translate.pt_BR.toml
@@ -573,17 +573,21 @@
 "no" = "❌ Não"
 
 "received_id" = "🔑📥 ID recebido: {{ .ClientId }}"
+"received_password" = "🔑📥 Senha recebida: {{ .ClientPass }}"
 "received_email" = "📧📥 E-mail recebido: {{ .ClientEmail }}"
 "received_comment" = "💬📥 Comentário recebido: {{ .ClientComment }}"
 "id_prompt" = "🔑 ID padrão: {{ .ClientId }}\n\nDigite seu ID."
+"pass_prompt" = "🔑 Senha padrão: {{ .ClientPassword }}\n\nDigite sua senha."
 "email_prompt" = "📧 E-mail padrão: {{ .ClientEmail }}\n\nDigite seu e-mail."
 "comment_prompt" = "💬 Comentário padrão: {{ .ClientComment }}\n\nDigite seu comentário."
-"inbound_client_data_id" = "🔄 Inbound: {{ .InboundRemark }}\n\n🔑 ID: {{ .ClientId }}\n📧 Email: {{ .ClientEmail }}\n💬 Comentário: {{ .ClientComment }}\n\nAgora você pode adicionar o cliente ao inbound!"
-"inbound_client_data_pass" = "🔄 Inbound: {{ .InboundRemark }}\n\n🔑 Senha: {{ .ClientPass }}\n📧 Email: {{ .ClientEmail }}\n💬 Comentário: {{ .ClientComment }}\n\nAgora você pode adicionar o cliente ao inbound!"
-"client_data" = "🔑 ID: {{ .ClientId }}\n📧 E-mail: {{ .ClientEmail }}\n💬 Comentário: {{ .ClientComment }}\n\nVocê pode adicionar o cliente à entrada agora!"
-"cancel" = "❌ Processo cancelado! \n\nVocê pode /start novamente a qualquer momento. 🔄"
+"inbound_client_data_id" = "🔄 Entrada: {{ .InboundRemark }}\n\n🔑 ID: {{ .ClientId }}\n📧 E-mail: {{ .ClientEmail }}\n💬 Comentário: {{ .ClientComment }}\n\nAgora você pode adicionar o cliente à entrada!"
+"inbound_client_data_pass" = "🔄 Entrada: {{ .InboundRemark }}\n\n🔑 Senha: {{ .ClientPass }}\n📧 E-mail: {{ .ClientEmail }}\n💬 Comentário: {{ .ClientComment }}\n\nAgora você pode adicionar o cliente à entrada!"
+"client_data_id" = "🔑 ID: {{ .ClientId }}\n📧 E-mail: {{ .ClientEmail }}\n💬 Comentário: {{ .ClientComment }}\n\nAgora você pode adicionar o cliente à entrada!"
+"client_data_pass" = "🔑 Senha: {{ .ClientPass }}\n📧 E-mail: {{ .ClientEmail }}\n💬 Comentário: {{ .ClientComment }}\n\nAgora você pode adicionar o cliente à entrada!"
+"cancel" = "❌ Processo cancelado! \n\nVocê pode usar /start a qualquer momento. 🔄"
 "error_add_client" = "⚠️ Erro:\n\n {{ .error }}"
-"success_add_client" = "🏆 Sucesso! Agora você pode modificá-lo usando o botão 'All Clients'."
+"success_add_client" = "🏆 Sucesso! \nAgora você pode editá-lo usando o botão 'Todos os Clientes'."
+
 
 [tgbot.buttons]
 "closeKeyboard" = "❌ Fechar teclado"
diff --git a/web/translation/translate.ru_RU.toml b/web/translation/translate.ru_RU.toml
index b97c6c97..8b4a94d3 100644
--- a/web/translation/translate.ru_RU.toml
+++ b/web/translation/translate.ru_RU.toml
@@ -573,17 +573,21 @@
 "no" = "❌ Нет"
 
 "received_id" = "🔑📥 Полученный ID: {{ .ClientId }}"
+"received_password" = "🔑📥 Полученный пароль: {{ .ClientPass }}"
 "received_email" = "📧📥 Полученный email: {{ .ClientEmail }}"
 "received_comment" = "💬📥 Полученный комментарий: {{ .ClientComment }}"
 "id_prompt" = "🔑 Стандартный ID: {{ .ClientId }}\n\nВведите ваш ID."
+"pass_prompt" = "🔑 Стандартный пароль: {{ .ClientPassword }}\n\nВведите ваш пароль."
 "email_prompt" = "📧 Стандартный email: {{ .ClientEmail }}\n\nВведите ваш email."
 "comment_prompt" = "💬 Стандартный комментарий: {{ .ClientComment }}\n\nВведите ваш комментарий."
-"inbound_client_data_id" = "🔄 Inbound: {{ .InboundRemark }}\n\n🔑 ID: {{ .ClientId }}\n📧 Электронная почта: {{ .ClientEmail }}\n💬 Комментарий: {{ .ClientComment }}\n\nТеперь вы можете добавить клиента в inbound!"
-"inbound_client_data_pass" = "🔄 Inbound: {{ .InboundRemark }}\n\n🔑 Пароль: {{ .ClientPass }}\n📧 Электронная почта: {{ .ClientEmail }}\n💬 Комментарий: {{ .ClientComment }}\n\nТеперь вы можете добавить клиента в inbound!"
-"client_data" = "🔑 ID: {{ .ClientId }}\n📧 Email: {{ .ClientEmail }}\n💬 Комментарий: {{ .ClientComment }}\n\nТеперь вы можете добавить клиента в входящие!"
-"cancel" = "❌ Процесс отменен! \n\nВы можете снова запустить /start в любое время. 🔄"
+"inbound_client_data_id" = "🔄 Входящий: {{ .InboundRemark }}\n\n🔑 ID: {{ .ClientId }}\n📧 Email: {{ .ClientEmail }}\n💬 Комментарий: {{ .ClientComment }}\n\nТеперь вы можете добавить клиента во входящие!"
+"inbound_client_data_pass" = "🔄 Входящий: {{ .InboundRemark }}\n\n🔑 Пароль: {{ .ClientPass }}\n📧 Email: {{ .ClientEmail }}\n💬 Комментарий: {{ .ClientComment }}\n\nТеперь вы можете добавить клиента во входящие!"
+"client_data_id" = "🔑 ID: {{ .ClientId }}\n📧 Email: {{ .ClientEmail }}\n💬 Комментарий: {{ .ClientComment }}\n\nТеперь вы можете добавить клиента во входящие!"
+"client_data_pass" = "🔑 Пароль: {{ .ClientPass }}\n📧 Email: {{ .ClientEmail }}\n💬 Комментарий: {{ .ClientComment }}\n\nТеперь вы можете добавить клиента во входящие!"
+"cancel" = "❌ Процесс отменен! \n\nВы можете начать заново в любое время с помощью /start. 🔄"
 "error_add_client" = "⚠️ Ошибка:\n\n {{ .error }}"
-"success_add_client" = "🏆 Успех! Теперь вы можете изменить его с помощью кнопки 'All Clients'."
+"success_add_client" = "🏆 Успех! \nТеперь вы можете изменить его, используя кнопку 'Все клиенты'."
+
 
 [tgbot.buttons]
 "closeKeyboard" = "❌ Закрыть клавиатуру"
diff --git a/web/translation/translate.tr_TR.toml b/web/translation/translate.tr_TR.toml
index 851c1ad6..90481b3b 100644
--- a/web/translation/translate.tr_TR.toml
+++ b/web/translation/translate.tr_TR.toml
@@ -572,18 +572,22 @@
 "yes" = "✅ Evet"
 "no" = "❌ Hayır"
 
-"received_id" = "🔑📥 Alınan ID: {{ .ClientId }}"
+"received_id" = "🔑📥 Alınan Kimlik: {{ .ClientId }}"
+"received_password" = "🔑📥 Alınan Şifre: {{ .ClientPass }}"
 "received_email" = "📧📥 Alınan E-posta: {{ .ClientEmail }}"
 "received_comment" = "💬📥 Alınan Yorum: {{ .ClientComment }}"
-"id_prompt" = "🔑 Varsayılan ID: {{ .ClientId }}\n\nID'nizi girin."
+"id_prompt" = "🔑 Varsayılan Kimlik: {{ .ClientId }}\n\nKimliğinizi girin."
+"pass_prompt" = "🔑 Varsayılan Şifre: {{ .ClientPassword }}\n\nŞifrenizi girin."
 "email_prompt" = "📧 Varsayılan E-posta: {{ .ClientEmail }}\n\nE-posta adresinizi girin."
 "comment_prompt" = "💬 Varsayılan Yorum: {{ .ClientComment }}\n\nYorumunuzu girin."
-"inbound_client_data_id" = "🔄 Inbound: {{ .InboundRemark }}\n\n🔑 ID: {{ .ClientId }}\n📧 E-posta: {{ .ClientEmail }}\n💬 Yorum: {{ .ClientComment }}\n\nŞimdi müşteriyi inbound'a ekleyebilirsiniz!"
-"inbound_client_data_pass" = "🔄 Inbound: {{ .InboundRemark }}\n\n🔑 Şifre: {{ .ClientPass }}\n📧 E-posta: {{ .ClientEmail }}\n💬 Yorum: {{ .ClientComment }}\n\nŞimdi müşteriyi inbound'a ekleyebilirsiniz!"
-"client_data" = "🔑 ID: {{ .ClientId }}\n📧 E-posta: {{ .ClientEmail }}\n💬 Yorum: {{ .ClientComment }}\n\nŞimdi müşteri girişine ekleyebilirsiniz!"
-"cancel" = "❌ İşlem iptal edildi! \n\nİstediğiniz zaman /start komutunu tekrar verebilirsiniz. 🔄"
+"inbound_client_data_id" = "🔄 Gelen: {{ .InboundRemark }}\n\n🔑 Kimlik: {{ .ClientId }}\n📧 E-posta: {{ .ClientEmail }}\n💬 Yorum: {{ .ClientComment }}\n\nArtık müşteriyi gelen kutusuna ekleyebilirsiniz!"
+"inbound_client_data_pass" = "🔄 Gelen: {{ .InboundRemark }}\n\n🔑 Şifre: {{ .ClientPass }}\n📧 E-posta: {{ .ClientEmail }}\n💬 Yorum: {{ .ClientComment }}\n\nArtık müşteriyi gelen kutusuna ekleyebilirsiniz!"
+"client_data_id" = "🔑 Kimlik: {{ .ClientId }}\n📧 E-posta: {{ .ClientEmail }}\n💬 Yorum: {{ .ClientComment }}\n\nArtık müşteriyi gelen kutusuna ekleyebilirsiniz!"
+"client_data_pass" = "🔑 Şifre: {{ .ClientPass }}\n📧 E-posta: {{ .ClientEmail }}\n💬 Yorum: {{ .ClientComment }}\n\nArtık müşteriyi gelen kutusuna ekleyebilirsiniz!"
+"cancel" = "❌ İşlem iptal edildi! \n\nİstediğiniz zaman /start kullanabilirsiniz. 🔄"
 "error_add_client" = "⚠️ Hata:\n\n {{ .error }}"
-"success_add_client" = "🏆 Başarılı! Şimdi 'All Clients' düğmesini kullanarak düzenleyebilirsiniz."
+"success_add_client" = "🏆 Başarılı! \nArtık 'Tüm Müşteriler' düğmesini kullanarak düzenleyebilirsiniz."
+
 
 [tgbot.buttons]
 "closeKeyboard" = "❌ Klavyeyi Kapat"
diff --git a/web/translation/translate.uk_UA.toml b/web/translation/translate.uk_UA.toml
index 80dd1c98..adc522ac 100644
--- a/web/translation/translate.uk_UA.toml
+++ b/web/translation/translate.uk_UA.toml
@@ -573,17 +573,21 @@
 "no" = "❌ Ні"
 
 "received_id" = "🔑📥 Отриманий ID: {{ .ClientId }}"
-"received_email" = "📧📥 Отриманий Email: {{ .ClientEmail }}"
+"received_password" = "🔑📥 Отриманий пароль: {{ .ClientPass }}"
+"received_email" = "📧📥 Отриманий email: {{ .ClientEmail }}"
 "received_comment" = "💬📥 Отриманий коментар: {{ .ClientComment }}"
-"id_prompt" = "🔑 За замовчуванням ID: {{ .ClientId }}\n\nВведіть ваш ID."
-"email_prompt" = "📧 За замовчуванням Email: {{ .ClientEmail }}\n\nВведіть ваш email."
-"comment_prompt" = "💬 За замовчуванням коментар: {{ .ClientComment }}\n\nВведіть ваш коментар."
-"inbound_client_data_id" = "🔄 Inbound: {{ .InboundRemark }}\n\n🔑 ID: {{ .ClientId }}\n📧 Електронна пошта: {{ .ClientEmail }}\n💬 Коментар: {{ .ClientComment }}\n\nТепер ви можете додати клієнта до inbound!"
-"inbound_client_data_pass" = "🔄 Inbound: {{ .InboundRemark }}\n\n🔑 Пароль: {{ .ClientPass }}\n📧 Електронна пошта: {{ .ClientEmail }}\n💬 Коментар: {{ .ClientComment }}\n\nТепер ви можете додати клієнта до inbound!"
-"client_data" = "🔑 ID: {{ .ClientId }}\n📧 Email: {{ .ClientEmail }}\n💬 Коментар: {{ .ClientComment }}\n\nЗараз ви можете додати клієнта до вхідних!"
-"cancel" = "❌ Процес скасовано! \n\nВи можете /start знову в будь-який час. 🔄"
+"id_prompt" = "🔑 Стандартний ID: {{ .ClientId }}\n\nВведіть ваш ID."
+"pass_prompt" = "🔑 Стандартний пароль: {{ .ClientPassword }}\n\nВведіть ваш пароль."
+"email_prompt" = "📧 Стандартний email: {{ .ClientEmail }}\n\nВведіть ваш email."
+"comment_prompt" = "💬 Стандартний коментар: {{ .ClientComment }}\n\nВведіть ваш коментар."
+"inbound_client_data_id" = "🔄 Вхідні: {{ .InboundRemark }}\n\n🔑 ID: {{ .ClientId }}\n📧 Email: {{ .ClientEmail }}\n💬 Коментар: {{ .ClientComment }}\n\nТепер ви можете додати клієнта до вхідних!"
+"inbound_client_data_pass" = "🔄 Вхідні: {{ .InboundRemark }}\n\n🔑 Пароль: {{ .ClientPass }}\n📧 Email: {{ .ClientEmail }}\n💬 Коментар: {{ .ClientComment }}\n\nТепер ви можете додати клієнта до вхідних!"
+"client_data_id" = "🔑 ID: {{ .ClientId }}\n📧 Email: {{ .ClientEmail }}\n💬 Коментар: {{ .ClientComment }}\n\nТепер ви можете додати клієнта до вхідних!"
+"client_data_pass" = "🔑 Пароль: {{ .ClientPass }}\n📧 Email: {{ .ClientEmail }}\n💬 Коментар: {{ .ClientComment }}\n\nТепер ви можете додати клієнта до вхідних!"
+"cancel" = "❌ Процес скасовано! \n\nВи можете використати /start у будь-який час. 🔄"
 "error_add_client" = "⚠️ Помилка:\n\n {{ .error }}"
-"success_add_client" = "🏆 Успіх! Тепер ви можете змінити його за допомогою кнопки 'All Clients'."
+"success_add_client" = "🏆 Успіх! \nТепер ви можете редагувати його за допомогою кнопки 'Усі клієнти'."
+
 
 [tgbot.buttons]
 "closeKeyboard" = "❌ Закрити клавіатуру"
diff --git a/web/translation/translate.vi_VN.toml b/web/translation/translate.vi_VN.toml
index 11ffb6dd..1ebe0baf 100644
--- a/web/translation/translate.vi_VN.toml
+++ b/web/translation/translate.vi_VN.toml
@@ -573,17 +573,21 @@
 "no" = "❌ Không"
 
 "received_id" = "🔑📥 ID nhận được: {{ .ClientId }}"
+"received_password" = "🔑📥 Mật khẩu nhận được: {{ .ClientPass }}"
 "received_email" = "📧📥 Email nhận được: {{ .ClientEmail }}"
-"received_comment" = "💬📥 Nhận được bình luận: {{ .ClientComment }}"
+"received_comment" = "💬📥 Bình luận nhận được: {{ .ClientComment }}"
 "id_prompt" = "🔑 ID mặc định: {{ .ClientId }}\n\nNhập ID của bạn."
+"pass_prompt" = "🔑 Mật khẩu mặc định: {{ .ClientPassword }}\n\nNhập mật khẩu của bạn."
 "email_prompt" = "📧 Email mặc định: {{ .ClientEmail }}\n\nNhập email của bạn."
 "comment_prompt" = "💬 Bình luận mặc định: {{ .ClientComment }}\n\nNhập bình luận của bạn."
-"inbound_client_data_id" = "🔄 Inbound: {{ .InboundRemark }}\n\n🔑 ID: {{ .ClientId }}\n📧 Email: {{ .ClientEmail }}\n💬 Bình luận: {{ .ClientComment }}\n\nBây giờ bạn có thể thêm khách hàng vào inbound!"
-"inbound_client_data_pass" = "🔄 Inbound: {{ .InboundRemark }}\n\n🔑 Mật khẩu: {{ .ClientPass }}\n📧 Email: {{ .ClientEmail }}\n💬 Bình luận: {{ .ClientComment }}\n\nBây giờ bạn có thể thêm khách hàng vào inbound!"
-"client_data" = "🔑 ID: {{ .ClientId }}\n📧 Email: {{ .ClientEmail }}\n💬 Bình luận: {{ .ClientComment }}\n\nBây giờ bạn có thể thêm khách hàng vào danh sách đến!"
-"cancel" = "❌ Quá trình bị hủy! \n\nBạn có thể /start lại bất cứ lúc nào. 🔄"
+"inbound_client_data_id" = "🔄 Dữ liệu đến: {{ .InboundRemark }}\n\n🔑 ID: {{ .ClientId }}\n📧 Email: {{ .ClientEmail }}\n💬 Bình luận: {{ .ClientComment }}\n\nBạn có thể thêm khách hàng vào danh sách đến ngay bây giờ!"
+"inbound_client_data_pass" = "🔄 Dữ liệu đến: {{ .InboundRemark }}\n\n🔑 Mật khẩu: {{ .ClientPass }}\n📧 Email: {{ .ClientEmail }}\n💬 Bình luận: {{ .ClientComment }}\n\nBạn có thể thêm khách hàng vào danh sách đến ngay bây giờ!"
+"client_data_id" = "🔑 ID: {{ .ClientId }}\n📧 Email: {{ .ClientEmail }}\n💬 Bình luận: {{ .ClientComment }}\n\nBạn có thể thêm khách hàng vào danh sách đến ngay bây giờ!"
+"client_data_pass" = "🔑 Mật khẩu: {{ .ClientPass }}\n📧 Email: {{ .ClientEmail }}\n💬 Bình luận: {{ .ClientComment }}\n\nBạn có thể thêm khách hàng vào danh sách đến ngay bây giờ!"
+"cancel" = "❌ Quá trình đã bị hủy! \n\nBạn có thể sử dụng /start bất cứ lúc nào. 🔄"
 "error_add_client" = "⚠️ Lỗi:\n\n {{ .error }}"
-"success_add_client" = "🏆 Thành công! Bây giờ bạn có thể chỉnh sửa nó bằng nút 'All Clients'."
+"success_add_client" = "🏆 Thành công! \nGiờ đây bạn có thể chỉnh sửa bằng nút 'Tất Cả Khách Hàng'."
+
 
 [tgbot.buttons]
 "closeKeyboard" = "❌ Đóng Bàn Phím"
diff --git a/web/translation/translate.zh_CN.toml b/web/translation/translate.zh_CN.toml
index da2d9380..4ab663af 100644
--- a/web/translation/translate.zh_CN.toml
+++ b/web/translation/translate.zh_CN.toml
@@ -573,17 +573,21 @@
 "no" = "❌ 没有"
 
 "received_id" = "🔑📥 接收到的ID: {{ .ClientId }}"
-"received_email" = "📧📥 接收到的邮件: {{ .ClientEmail }}"
+"received_password" = "🔑📥 接收到的密码: {{ .ClientPass }}"
+"received_email" = "📧📥 接收到的电子邮件: {{ .ClientEmail }}"
 "received_comment" = "💬📥 接收到的评论: {{ .ClientComment }}"
 "id_prompt" = "🔑 默认ID: {{ .ClientId }}\n\n请输入您的ID。"
-"email_prompt" = "📧 默认邮件: {{ .ClientEmail }}\n\n请输入您的邮箱。"
+"pass_prompt" = "🔑 默认密码: {{ .ClientPassword }}\n\n请输入您的密码。"
+"email_prompt" = "📧 默认电子邮件: {{ .ClientEmail }}\n\n请输入您的电子邮件。"
 "comment_prompt" = "💬 默认评论: {{ .ClientComment }}\n\n请输入您的评论。"
-"inbound_client_data_id" = "🔄 Inbound: {{ .InboundRemark }}\n\n🔑 ID: {{ .ClientId }}\n📧 电子邮件: {{ .ClientEmail }}\n💬 评论: {{ .ClientComment }}\n\n现在您可以将客户添加到inbound!"
-"inbound_client_data_pass" = "🔄 Inbound: {{ .InboundRemark }}\n\n🔑 密码: {{ .ClientPass }}\n📧 电子邮件: {{ .ClientEmail }}\n💬 评论: {{ .ClientComment }}\n\n现在您可以将客户添加到inbound!"
-"client_data" = "🔑 ID: {{ .ClientId }}\n📧 邮件: {{ .ClientEmail }}\n💬 评论: {{ .ClientComment }}\n\n现在您可以将客户添加到入站!"
-"cancel" = "❌ 过程已取消! \n\n您可以随时 /start 重新开始。 🔄"
+"inbound_client_data_id" = "🔄 传入数据: {{ .InboundRemark }}\n\n🔑 ID: {{ .ClientId }}\n📧 电子邮件: {{ .ClientEmail }}\n💬 评论: {{ .ClientComment }}\n\n您现在可以将客户添加到传入列表!"
+"inbound_client_data_pass" = "🔄 传入数据: {{ .InboundRemark }}\n\n🔑 密码: {{ .ClientPass }}\n📧 电子邮件: {{ .ClientEmail }}\n💬 评论: {{ .ClientComment }}\n\n您现在可以将客户添加到传入列表!"
+"client_data_id" = "🔑 ID: {{ .ClientId }}\n📧 电子邮件: {{ .ClientEmail }}\n💬 评论: {{ .ClientComment }}\n\n您现在可以将客户添加到传入列表!"
+"client_data_pass" = "🔑 密码: {{ .ClientPass }}\n📧 电子邮件: {{ .ClientEmail }}\n💬 评论: {{ .ClientComment }}\n\n您现在可以将客户添加到传入列表!"
+"cancel" = "❌ 过程已取消!\n\n您可以随时使用 /start。 🔄"
 "error_add_client" = "⚠️ 错误:\n\n {{ .error }}"
-"success_add_client" = "🏆 成功!现在您可以使用“All Clients”按钮进行修改。"
+"success_add_client" = "🏆 成功!\n您现在可以使用'所有客户'按钮进行修改。"
+
 
 [tgbot.buttons]
 "closeKeyboard" = "❌ 关闭键盘"
diff --git a/web/translation/translate.zh_TW.toml b/web/translation/translate.zh_TW.toml
index 69dfc847..88836c3f 100644
--- a/web/translation/translate.zh_TW.toml
+++ b/web/translation/translate.zh_TW.toml
@@ -572,18 +572,22 @@
 "yes" = "✅ 是的"
 "no" = "❌ 沒有"
 
-"received_id" = "🔑📥 接收到的ID: {{ .ClientId }}"
+"received_id" = "🔑📥 接收到的 ID: {{ .ClientId }}"
+"received_password" = "🔑📥 接收到的密碼: {{ .ClientPass }}"
 "received_email" = "📧📥 接收到的電子郵件: {{ .ClientEmail }}"
 "received_comment" = "💬📥 接收到的評論: {{ .ClientComment }}"
-"id_prompt" = "🔑 預設ID: {{ .ClientId }}\n\n請輸入您的ID。"
+"id_prompt" = "🔑 預設 ID: {{ .ClientId }}\n\n請輸入您的 ID。"
+"pass_prompt" = "🔑 預設密碼: {{ .ClientPassword }}\n\n請輸入您的密碼。"
 "email_prompt" = "📧 預設電子郵件: {{ .ClientEmail }}\n\n請輸入您的電子郵件。"
 "comment_prompt" = "💬 預設評論: {{ .ClientComment }}\n\n請輸入您的評論。"
-"inbound_client_data_id" = "🔄 Inbound: {{ .InboundRemark }}\n\n🔑 ID: {{ .ClientId }}\n📧 電子郵件: {{ .ClientEmail }}\n💬 註解: {{ .ClientComment }}\n\n現在您可以將客戶添加到inbound!"
-"inbound_client_data_pass" = "🔄 Inbound: {{ .InboundRemark }}\n\n🔑 密碼: {{ .ClientPass }}\n📧 電子郵件: {{ .ClientEmail }}\n💬 註解: {{ .ClientComment }}\n\n現在您可以將客戶添加到inbound!"
-"client_data" = "🔑 ID: {{ .ClientId }}\n📧 電子郵件: {{ .ClientEmail }}\n💬 評論: {{ .ClientComment }}\n\n您現在可以將客戶加入進站!"
-"cancel" = "❌ 處理已取消! \n\n您隨時可以 /start 再次開始。 🔄"
+"inbound_client_data_id" = "🔄 傳入數據: {{ .InboundRemark }}\n\n🔑 ID: {{ .ClientId }}\n📧 電子郵件: {{ .ClientEmail }}\n💬 評論: {{ .ClientComment }}\n\n您現在可以將客戶添加到傳入列表!"
+"inbound_client_data_pass" = "🔄 傳入數據: {{ .InboundRemark }}\n\n🔑 密碼: {{ .ClientPass }}\n📧 電子郵件: {{ .ClientEmail }}\n💬 評論: {{ .ClientComment }}\n\n您現在可以將客戶添加到傳入列表!"
+"client_data_id" = "🔑 ID: {{ .ClientId }}\n📧 電子郵件: {{ .ClientEmail }}\n💬 評論: {{ .ClientComment }}\n\n您現在可以將客戶添加到傳入列表!"
+"client_data_pass" = "🔑 密碼: {{ .ClientPass }}\n📧 電子郵件: {{ .ClientEmail }}\n💬 評論: {{ .ClientComment }}\n\n您現在可以將客戶添加到傳入列表!"
+"cancel" = "❌ 過程已取消!\n\n您可以隨時使用 /start。 🔄"
 "error_add_client" = "⚠️ 錯誤:\n\n {{ .error }}"
-"success_add_client" = "🏆 成功!現在您可以使用「All Clients」按鈕進行修改。"
+"success_add_client" = "🏆 成功!\n您現在可以使用'所有客戶'按鈕進行修改。"
+
 
 [tgbot.buttons]
 "closeKeyboard" = "❌ 關閉鍵盤"

From 176f90704374d539fe2ad34ffc1b3a7deb2f6204 Mon Sep 17 00:00:00 2001
From: nistootsin <104831639+nistootsin@users.noreply.github.com>
Date: Mon, 17 Mar 2025 13:32:39 +0330
Subject: [PATCH 7/7] - remove add_client_as_enable button in bot

---
 web/service/tgbot.go                 | 19 +------------------
 web/translation/translate.en_US.toml |  3 +--
 web/translation/translate.es_ES.toml |  3 +--
 web/translation/translate.fa_IR.toml |  3 +--
 web/translation/translate.id_ID.toml |  3 +--
 web/translation/translate.ja_JP.toml |  3 +--
 web/translation/translate.pt_BR.toml |  3 +--
 web/translation/translate.ru_RU.toml |  3 +--
 web/translation/translate.tr_TR.toml |  3 +--
 web/translation/translate.uk_UA.toml |  3 +--
 web/translation/translate.vi_VN.toml |  3 +--
 web/translation/translate.zh_CN.toml |  3 +--
 web/translation/translate.zh_TW.toml |  3 +--
 13 files changed, 13 insertions(+), 42 deletions(-)

diff --git a/web/service/tgbot.go b/web/service/tgbot.go
index e7975460..21baba38 100644
--- a/web/service/tgbot.go
+++ b/web/service/tgbot.go
@@ -319,12 +319,9 @@ func (t *Tgbot) OnReceive() {
 				message_text, _ := t.BuildClientDataMessage()
 
 				inlineKeyboard := tu.InlineKeyboard(
-					tu.InlineKeyboardRow(
-						tu.InlineKeyboardButton(t.I18nBot("tgbot.buttons.submitEnable")).WithCallbackData("add_client_submit_enable"),
-						tu.InlineKeyboardButton(t.I18nBot("tgbot.buttons.submitDisable")).WithCallbackData("add_client_submit_disable"),
-					),
 					tu.InlineKeyboardRow(
 						tu.InlineKeyboardButton(t.I18nBot("tgbot.buttons.cancel")).WithCallbackData("add_client_cancel"),
+						tu.InlineKeyboardButton(t.I18nBot("tgbot.buttons.submitDisable")).WithCallbackData("add_client_submit_disable"),
 					),
 				)
 				t.SendMsgToTgbot(message.Chat.ID, message_text, inlineKeyboard)
@@ -1106,10 +1103,7 @@ func (t *Tgbot) answerCallback(callbackQuery *telego.CallbackQuery, isAdmin bool
 
 		inlineKeyboard := tu.InlineKeyboard(
 			tu.InlineKeyboardRow(
-				tu.InlineKeyboardButton(t.I18nBot("tgbot.buttons.submitEnable")).WithCallbackData("add_client_submit_enable"),
 				tu.InlineKeyboardButton(t.I18nBot("tgbot.buttons.submitDisable")).WithCallbackData("add_client_submit_disable"),
-			),
-			tu.InlineKeyboardRow(
 				tu.InlineKeyboardButton(t.I18nBot("tgbot.buttons.cancel")).WithCallbackData("add_client_cancel"),
 			),
 		)
@@ -1119,14 +1113,6 @@ func (t *Tgbot) answerCallback(callbackQuery *telego.CallbackQuery, isAdmin bool
 	case "add_client_cancel":
 		delete(userStates, chatId)
 		t.SendMsgToTgbot(chatId, t.I18nBot("tgbot.messages.cancel"), tu.ReplyKeyboardRemove())
-	case "add_client_submit_enable":
-		_, err := t.SubmitAddClient()
-		if err != nil {
-			errorMessage := fmt.Sprintf("%v", err)
-			t.SendMsgToTgbot(chatId, t.I18nBot("tgbot.messages.error_add_client", "error=="+errorMessage), tu.ReplyKeyboardRemove())
-		} else {
-			t.SendMsgToTgbot(chatId, t.I18nBot("tgbot.messages.success_add_client"), tu.ReplyKeyboardRemove())
-		}
 	case "add_client_submit_disable":
 		client_Enable = false
 		_, err := t.SubmitAddClient()
@@ -1962,10 +1948,7 @@ func (t *Tgbot) addClient(chatId int64, msg string, messageID ...int) {
 			tu.InlineKeyboardButton(t.I18nBot("tgbot.buttons.change_default")).WithCallbackData("add_client_ch_default"),
 		),
 		tu.InlineKeyboardRow(
-			tu.InlineKeyboardButton(t.I18nBot("tgbot.buttons.submitEnable")).WithCallbackData("add_client_submit_enable"),
 			tu.InlineKeyboardButton(t.I18nBot("tgbot.buttons.submitDisable")).WithCallbackData("add_client_submit_disable"),
-		),
-		tu.InlineKeyboardRow(
 			tu.InlineKeyboardButton(t.I18nBot("tgbot.buttons.cancel")).WithCallbackData("add_client_cancel"),
 		),
 	)
diff --git a/web/translation/translate.en_US.toml b/web/translation/translate.en_US.toml
index bea6ea1b..07b22055 100644
--- a/web/translation/translate.en_US.toml
+++ b/web/translation/translate.en_US.toml
@@ -623,8 +623,7 @@
 "allClients" = "All Clients"
 
 "addClient" = "Add Client"
-"submitEnable" = "Submit As Enable ✅"
-"submitDisable" = "Submit As Disable 🚫"
+"submitDisable" = "Submit As Disable ✅"
 "use_default" = "🏷️ Use default"
 "change_default" = "🔄⚙️ Change Default"
 
diff --git a/web/translation/translate.es_ES.toml b/web/translation/translate.es_ES.toml
index a17f07e2..56ebf293 100644
--- a/web/translation/translate.es_ES.toml
+++ b/web/translation/translate.es_ES.toml
@@ -624,8 +624,7 @@
 "allClients" = "Todos los Clientes"
 
 "addClient" = "Añadir Cliente"
-"submitEnable" = "Enviar como Habilitado ✅"
-"submitDisable" = "Enviar como Deshabilitado 🚫"
+"submitDisable" = "Enviar como Deshabilitado ✅"
 "use_default" = "🏷️ Usar por defecto"
 "change_default" = "🔄⚙️ Cambiar por defecto"
 
diff --git a/web/translation/translate.fa_IR.toml b/web/translation/translate.fa_IR.toml
index e5649811..58e84b95 100644
--- a/web/translation/translate.fa_IR.toml
+++ b/web/translation/translate.fa_IR.toml
@@ -624,8 +624,7 @@
 "allClients" = "همه مشتریان"
 
 "addClient" = "افزودن مشتری"
-"submitEnable" = "ارسال به عنوان فعال ✅"
-"submitDisable" = "ارسال به عنوان غیرفعال 🚫"
+"submitDisable" = "ارسال به عنوان غیرفعال ✅"
 "use_default" = "🏷️ استفاده از پیش‌فرض"
 "change_default" = "🔄⚙️ تغییر پیش‌فرض"
 
diff --git a/web/translation/translate.id_ID.toml b/web/translation/translate.id_ID.toml
index bcf733be..703b799b 100644
--- a/web/translation/translate.id_ID.toml
+++ b/web/translation/translate.id_ID.toml
@@ -624,8 +624,7 @@
 "allClients" = "Semua Klien"
 
 "addClient" = "Tambah Klien"
-"submitEnable" = "Kirim Sebagai Aktif ✅"
-"submitDisable" = "Kirim Sebagai Nonaktif 🚫"
+"submitDisable" = "Kirim Sebagai Nonaktif ✅"
 "use_default" = "🏷️ Gunakan Default"
 "change_default" = "🔄⚙️ Ubah Default"
 
diff --git a/web/translation/translate.ja_JP.toml b/web/translation/translate.ja_JP.toml
index 756402fc..5e1b92d5 100644
--- a/web/translation/translate.ja_JP.toml
+++ b/web/translation/translate.ja_JP.toml
@@ -624,8 +624,7 @@
 "allClients" = "すべてのクライアント"
 
 "addClient" = "クライアントを追加"
-"submitEnable" = "有効として送信 ✅"
-"submitDisable" = "無効として送信 🚫"
+"submitDisable" = "無効として送信 ✅"
 "use_default" = "🏷️ デフォルトを使用"
 "change_default" = "🔄⚙️ デフォルトを変更"
 
diff --git a/web/translation/translate.pt_BR.toml b/web/translation/translate.pt_BR.toml
index 3f237b28..31a14376 100644
--- a/web/translation/translate.pt_BR.toml
+++ b/web/translation/translate.pt_BR.toml
@@ -624,8 +624,7 @@
 "allClients" = "Todos os clientes"
 
 "addClient" = "Adicionar Cliente"
-"submitEnable" = "Enviar como Ativado ✅"
-"submitDisable" = "Enviar como Desativado 🚫"
+"submitDisable" = "Enviar como Desativado ✅"
 "use_default" = "🏷️ Usar padrão"
 "change_default" = "🔄⚙️ Alterar Padrão"
 
diff --git a/web/translation/translate.ru_RU.toml b/web/translation/translate.ru_RU.toml
index 8b4a94d3..9f753d49 100644
--- a/web/translation/translate.ru_RU.toml
+++ b/web/translation/translate.ru_RU.toml
@@ -624,8 +624,7 @@
 "allClients" = "Все клиенты"
 
 "addClient" = "Добавить клиента"
-"submitEnable" = "Отправить как включено ✅"
-"submitDisable" = "Отправить как отключено 🚫"
+"submitDisable" = "Отправить как отключено ✅"
 "use_default" = "🏷️ Использовать по умолчанию"
 "change_default" = "🔄⚙️ Изменить по умолчанию"
 
diff --git a/web/translation/translate.tr_TR.toml b/web/translation/translate.tr_TR.toml
index 90481b3b..f4dec336 100644
--- a/web/translation/translate.tr_TR.toml
+++ b/web/translation/translate.tr_TR.toml
@@ -624,8 +624,7 @@
 "allClients" = "Tüm Müşteriler"
 
 "addClient" = "Müşteri Ekle"
-"submitEnable" = "Etkin Olarak Gönder ✅"
-"submitDisable" = "Devre Dışı Olarak Gönder 🚫"
+"submitDisable" = "Devre Dışı Olarak Gönder ✅"
 "use_default" = "🏷️ Varsayılanı Kullan"
 "change_default" = "🔄⚙️ Varsayılanı Değiştir"
 
diff --git a/web/translation/translate.uk_UA.toml b/web/translation/translate.uk_UA.toml
index adc522ac..00b622c5 100644
--- a/web/translation/translate.uk_UA.toml
+++ b/web/translation/translate.uk_UA.toml
@@ -624,8 +624,7 @@
 "allClients" = "Всі Клієнти"
 
 "addClient" = "Додати клієнта"
-"submitEnable" = "Надіслати як увімкнено ✅"
-"submitDisable" = "Надіслати як вимкнено 🚫"
+"submitDisable" = "Надіслати як вимкнено ✅"
 "use_default" = "🏷️ Використати за замовчуванням"
 "change_default" = "🔄⚙️ Змінити за замовчуванням"
 
diff --git a/web/translation/translate.vi_VN.toml b/web/translation/translate.vi_VN.toml
index 1ebe0baf..95fa2b7c 100644
--- a/web/translation/translate.vi_VN.toml
+++ b/web/translation/translate.vi_VN.toml
@@ -624,8 +624,7 @@
 "allClients" = "Tất cả Khách hàng"
 
 "addClient" = "Thêm Khách Hàng"
-"submitEnable" = "Gửi Dưới Dạng Bật ✅"
-"submitDisable" = "Gửi Dưới Dạng Tắt 🚫"
+"submitDisable" = "Gửi Dưới Dạng Tắt ✅"
 "use_default" = "🏷️ Sử dụng mặc định"
 "change_default" = "🔄⚙️ Thay đổi mặc định"
 
diff --git a/web/translation/translate.zh_CN.toml b/web/translation/translate.zh_CN.toml
index 4ab663af..b6946e97 100644
--- a/web/translation/translate.zh_CN.toml
+++ b/web/translation/translate.zh_CN.toml
@@ -624,8 +624,7 @@
 "allClients" = "所有客户"
 
 "addClient" = "添加客户"
-"submitEnable" = "提交为启用 ✅"
-"submitDisable" = "提交为禁用 🚫"
+"submitDisable" = "提交为禁用 ✅"
 "use_default" = "🏷️ 使用默认"
 "change_default" = "🔄⚙️ 更改默认"
 
diff --git a/web/translation/translate.zh_TW.toml b/web/translation/translate.zh_TW.toml
index 88836c3f..bf9c6b55 100644
--- a/web/translation/translate.zh_TW.toml
+++ b/web/translation/translate.zh_TW.toml
@@ -624,8 +624,7 @@
 "allClients" = "所有客戶"
 
 "addClient" = "新增客戶"
-"submitEnable" = "提交為啟用 ✅"
-"submitDisable" = "提交為停用 🚫"
+"submitDisable" = "提交為停用 ✅"
 "use_default" = "🏷️ 使用預設"
 "change_default" = "🔄⚙️ 更改預設"