Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/MHSanaei/3x-ui.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/web
diff options
context:
space:
mode:
authorMasoud Hidden <masoud.hidden.user@gmail.com>2023-05-14 22:13:23 +0300
committerMasoud Hidden <masoud.hidden.user@gmail.com>2023-05-14 22:13:23 +0300
commit4cf7f75749e278d7c188bcc4829c085555871c3b (patch)
treeec6276b658b0a0515456a30c977f7dbfc831fe6a /web
parentbcdac5aad64561993b00cc3873091cfc0eb083a6 (diff)
[tgbot] Ability to remove telegram user from the client in the bot
Diffstat (limited to 'web')
-rw-r--r--web/service/tgbot.go74
1 files changed, 60 insertions, 14 deletions
diff --git a/web/service/tgbot.go b/web/service/tgbot.go
index 3168839b..85c9867a 100644
--- a/web/service/tgbot.go
+++ b/web/service/tgbot.go
@@ -183,17 +183,23 @@ func (t *Tgbot) asnwerCallback(callbackQuery *telego.CallbackQuery, isAdmin bool
email := dataArray[1]
switch dataArray[0] {
case "client_refresh":
- t.sendCallbackAnswerTgBot(callbackQuery.ID, fmt.Sprintf("✅ %s : Client Refreshed successfully.", email))
+ t.sendCallbackAnswerTgBot(callbackQuery.ID, fmt.Sprintf("✅ %s : Client refreshed successfully.", email))
t.searchClient(chatId, email, callbackQuery.Message.MessageID)
case "client_cancel":
t.sendCallbackAnswerTgBot(callbackQuery.ID, fmt.Sprintf("❌ %s : Operation canceled.", email))
t.searchClient(chatId, email, callbackQuery.Message.MessageID)
case "ips_refresh":
- t.sendCallbackAnswerTgBot(callbackQuery.ID, fmt.Sprintf("✅ %s : IPs Refreshed successfully.", email))
+ t.sendCallbackAnswerTgBot(callbackQuery.ID, fmt.Sprintf("✅ %s : IPs refreshed successfully.", email))
t.searchClientIps(chatId, email, callbackQuery.Message.MessageID)
case "ips_cancel":
t.sendCallbackAnswerTgBot(callbackQuery.ID, fmt.Sprintf("❌ %s : Operation canceled.", email))
t.searchClientIps(chatId, email, callbackQuery.Message.MessageID)
+ case "tgid_refresh":
+ t.sendCallbackAnswerTgBot(callbackQuery.ID, fmt.Sprintf("✅ %s : Client's Telegram User refreshed successfully.", email))
+ t.clientTelegramUserInfo(chatId, email, callbackQuery.Message.MessageID)
+ case "tgid_cancel":
+ t.sendCallbackAnswerTgBot(callbackQuery.ID, fmt.Sprintf("❌ %s : Operation canceled.", email))
+ t.clientTelegramUserInfo(chatId, email, callbackQuery.Message.MessageID)
case "reset_traffic":
inlineKeyboard := tu.InlineKeyboard(
tu.InlineKeyboardRow(
@@ -325,6 +331,29 @@ func (t *Tgbot) asnwerCallback(callbackQuery *telego.CallbackQuery, isAdmin bool
case "tg_user":
t.sendCallbackAnswerTgBot(callbackQuery.ID, fmt.Sprintf("✅ %s : Get Telegram User Info.", email))
t.clientTelegramUserInfo(chatId, email)
+ case "tgid_remove":
+ inlineKeyboard := tu.InlineKeyboard(
+ tu.InlineKeyboardRow(
+ tu.InlineKeyboardButton("❌ Cancel").WithCallbackData("tgid_cancel "+email),
+ ),
+ tu.InlineKeyboardRow(
+ tu.InlineKeyboardButton("✅ Confirm Remove Telegram User?").WithCallbackData("tgid_remove_c "+email),
+ ),
+ )
+ t.editMessageCallbackTgBot(chatId, callbackQuery.Message.MessageID, inlineKeyboard)
+ case "tgid_remove_c":
+ traffic, err := t.inboundService.GetClientTrafficByEmail(email)
+ if err != nil || traffic == nil {
+ t.sendCallbackAnswerTgBot(callbackQuery.ID, "❗ Error in Operation.")
+ return
+ }
+ err = t.inboundService.SetClientTelegramUserID(traffic.Id, "")
+ if err == nil {
+ t.sendCallbackAnswerTgBot(callbackQuery.ID, fmt.Sprintf("✅ %s : Telegram User removed successfully.", email))
+ t.clientTelegramUserInfo(chatId, email, callbackQuery.Message.MessageID)
+ } else {
+ t.sendCallbackAnswerTgBot(callbackQuery.ID, "❗ Error in Operation.")
+ }
case "toggle_enable":
enabled, err := t.inboundService.ToggleClientEnableByEmail(email)
if err == nil {
@@ -637,7 +666,7 @@ func (t *Tgbot) searchClientIps(chatId int64, email string, messageID ...int) {
}
}
-func (t *Tgbot) clientTelegramUserInfo(chatId int64, email string) {
+func (t *Tgbot) clientTelegramUserInfo(chatId int64, email string, messageID ...int) {
traffic, client, err := t.inboundService.GetClientByEmail(email)
if err != nil {
logger.Warning(err)
@@ -650,20 +679,37 @@ func (t *Tgbot) clientTelegramUserInfo(chatId int64, email string) {
t.SendMsgToTgbot(chatId, msg)
return
}
- output := fmt.Sprintf("📧 Email: %s\r\n👤 Telegram User: %s\r\n", email, client.TgID)
- requestUser := telego.KeyboardButtonRequestUser{
- RequestID: int32(traffic.Id),
- UserIsBot: false,
+ tdId := "None"
+ if len(client.TgID) > 0 {
+ tdId = client.TgID
}
- keyboard := tu.Keyboard(
- tu.KeyboardRow(
- tu.KeyboardButton("👤 Select Telegram User").WithRequestUser(&requestUser),
+ output := fmt.Sprintf("📧 Email: %s\r\n👤 Telegram User: %s\r\n", email, tdId)
+ inlineKeyboard := tu.InlineKeyboard(
+ tu.InlineKeyboardRow(
+ tu.InlineKeyboardButton("🔄 Refresh").WithCallbackData("tgid_refresh "+email),
),
- tu.KeyboardRow(
- tu.KeyboardButton("❌ Close Keyboard"),
+ tu.InlineKeyboardRow(
+ tu.InlineKeyboardButton("❌ Remove Telegram User").WithCallbackData("tgid_remove "+email),
),
- ).WithIsPersistent()
- t.SendMsgToTgbot(chatId, output, keyboard)
+ )
+ if len(messageID) > 0 {
+ t.editMessageTgBot(chatId, messageID[0], output, inlineKeyboard)
+ } else {
+ t.SendMsgToTgbot(chatId, output, inlineKeyboard)
+ requestUser := telego.KeyboardButtonRequestUser{
+ RequestID: int32(traffic.Id),
+ UserIsBot: false,
+ }
+ keyboard := tu.Keyboard(
+ tu.KeyboardRow(
+ tu.KeyboardButton("👤 Select Telegram User").WithRequestUser(&requestUser),
+ ),
+ tu.KeyboardRow(
+ tu.KeyboardButton("❌ Close Keyboard"),
+ ),
+ ).WithIsPersistent()
+ t.SendMsgToTgbot(chatId, "👤 Select a telegram user:", keyboard)
+ }
}
func (t *Tgbot) searchClient(chatId int64, email string, messageID ...int) {