diff --git a/web/service/tgbot.go b/web/service/tgbot.go index ffdb63f9..794f5c7b 100644 --- a/web/service/tgbot.go +++ b/web/service/tgbot.go @@ -393,6 +393,36 @@ func (t *Tgbot) OnReceive() { inbound, _ := t.inboundService.GetInbound(receiver_inbound_ID) message_text, _ := t.BuildInboundClientDataMessage(inbound.Remark, inbound.Protocol) t.addClient(message.Chat.ID, message_text) + case "awaiting_broadcast_message": + smsg := message.Text + delete(userStates, message.Chat.ID) + + // Получаем все инбаунды + inbounds, err := t.inboundService.GetAllInbounds() + if err != nil { + t.SendMsgToTgbot(message.Chat.ID, "Ошибка получения inbounds: "+err.Error(), tu.ReplyKeyboardRemove()) + return + } + + var allClients []model.Client + for _, inbound := range inbounds { + clients, err := t.inboundService.GetClients(inbound) + if err != nil { + t.SendMsgToTgbot(message.Chat.ID, "Ошибка получения клиентов: "+err.Error(), tu.ReplyKeyboardRemove()) + continue + } + allClients = append(allClients, clients...) + } + + // Формируем строку для вывода (dev-версия) + var sb strings.Builder + sb.WriteString("Получено сообщение для рассылки: \n") + sb.WriteString(smsg + "\n\n") + sb.WriteString("Все пользователи (структуры):\n") + for i, client := range allClients { + sb.WriteString(fmt.Sprintf("%d: %+v\n", i+1, client)) + } + t.SendMsgToTgbot(message.Chat.ID, sb.String(), tu.ReplyKeyboardRemove()) } } else { @@ -1157,8 +1187,6 @@ func (t *Tgbot) answerCallback(callbackQuery *telego.CallbackQuery, isAdmin bool return } } - t.sendCallbackAnswerTgBot(callbackQuery.ID, t.I18nBot("tgbot.answers.errorOperation")) - t.searchClient(chatId, email, callbackQuery.Message.GetMessageID()) case "clear_ips": inlineKeyboard := tu.InlineKeyboard( tu.InlineKeyboardRow( @@ -1617,6 +1645,19 @@ func (t *Tgbot) answerCallback(callbackQuery *telego.CallbackQuery, isAdmin bool t.SendMsgToTgbot(chatId, msg, tu.ReplyKeyboardRemove()) } + case "message_send": + inlineKeyboard := tu.InlineKeyboard( + tu.InlineKeyboardRow( + tu.InlineKeyboardButton(t.I18nBot("tgbot.buttons.msgUser")).WithCallbackData(t.encodeQuery("message_send_user")), + tu.InlineKeyboardButton(t.I18nBot("tgbot.buttons.msgAll")).WithCallbackData(t.encodeQuery("message_send_all")), + ), + ) + msg := t.I18nBot("tgbot.messages.chooseSend") + t.SendMsgToTgbot(chatId, msg, inlineKeyboard) + case "message_send_all": + msg := t.I18nBot("tgbot.messages.enterMessageText") + t.SendMsgToTgbot(chatId, msg, tu.ForceReply()) + userStates[chatId] = "awaiting_broadcast_message" } } @@ -1799,6 +1840,9 @@ func (t *Tgbot) SendAnswer(chatId int64, msg string, isAdmin bool) { tu.InlineKeyboardButton(t.I18nBot("tgbot.buttons.allClients")).WithCallbackData(t.encodeQuery("get_inbounds")), tu.InlineKeyboardButton(t.I18nBot("tgbot.buttons.addClient")).WithCallbackData(t.encodeQuery("add_client")), ), + tu.InlineKeyboardRow( + tu.InlineKeyboardButton(t.I18nBot("tgbot.buttons.msgSend")).WithCallbackData(t.encodeQuery("message_send")), + ), // TODOOOOOOOOOOOOOO: Add restart button here. ) numericKeyboardClient := tu.InlineKeyboard( diff --git a/web/translation/translate.ar_EG.toml b/web/translation/translate.ar_EG.toml index e582c9cd..5a86bc07 100644 --- a/web/translation/translate.ar_EG.toml +++ b/web/translation/translate.ar_EG.toml @@ -698,6 +698,9 @@ "limitTraffic" = "🚧 حد الترافيك" "getBanLogs" = "احصل على سجلات الحظر" "allClients" = "كل العملاء" +"msgSend" = "💬 إرسال الإشعارات" +"msgUser" = "👤 للمستخدم" +"msgAll" = "👥 لجميع مستخدمي البوت" "addClient" = "إضافة عميل" "submitDisable" = "إرسال كمعطّل ☑️" diff --git a/web/translation/translate.en_US.toml b/web/translation/translate.en_US.toml index 3dea80dc..977970e9 100644 --- a/web/translation/translate.en_US.toml +++ b/web/translation/translate.en_US.toml @@ -697,6 +697,9 @@ "limitTraffic" = "🚧 Traffic Limit" "getBanLogs" = "Get Ban Logs" "allClients" = "All Clients" +"msgSend" = "💬 Send Notifications" +"msgUser" = "👤 To User" +"msgAll" = "👥 To All Bot Users" "addClient" = "Add Client" "submitDisable" = "Submit As Disable ☑️" diff --git a/web/translation/translate.es_ES.toml b/web/translation/translate.es_ES.toml index 54b7d5b8..63345022 100644 --- a/web/translation/translate.es_ES.toml +++ b/web/translation/translate.es_ES.toml @@ -700,6 +700,9 @@ "limitTraffic" = "🚧 Límite de tráfico" "getBanLogs" = "Registros de prohibición" "allClients" = "Todos los Clientes" +"msgSend" = "💬 Enviar notificaciones" +"msgUser" = "👤 A usuario" +"msgAll" = "👥 A todos los usuarios del bot" "addClient" = "Añadir cliente" "submitDisable" = "Enviar como deshabilitado ☑️" diff --git a/web/translation/translate.fa_IR.toml b/web/translation/translate.fa_IR.toml index 3861e7ef..45cb3982 100644 --- a/web/translation/translate.fa_IR.toml +++ b/web/translation/translate.fa_IR.toml @@ -700,6 +700,9 @@ "limitTraffic" = "🚧 محدودیت ترافیک" "getBanLogs" = "گزارش های بلوک را دریافت کنید" "allClients" = "همه مشتریان" +"msgSend" = "💬 ارسال اعلان‌ها" +"msgUser" = "👤 به کاربر" +"msgAll" = "👥 به همه کاربران ربات" "addClient" = "افزودن مشتری" "submitDisable" = "ارسال به عنوان غیرفعال ☑️" diff --git a/web/translation/translate.id_ID.toml b/web/translation/translate.id_ID.toml index dbed4130..149a006c 100644 --- a/web/translation/translate.id_ID.toml +++ b/web/translation/translate.id_ID.toml @@ -701,6 +701,9 @@ "limitTraffic" = "🚧 Batas Lalu Lintas" "getBanLogs" = "Dapatkan Log Pemblokiran" "allClients" = "Semua Klien" +"msgSend" = "💬 Kirim Notifikasi" +"msgUser" = "👤 Ke Pengguna" +"msgAll" = "👥 Ke Semua Pengguna Bot" "addClient" = "Tambah Klien" "submitDisable" = "Kirim Sebagai Nonaktif ☑️" diff --git a/web/translation/translate.ja_JP.toml b/web/translation/translate.ja_JP.toml index 0e50a2c8..98b136f8 100644 --- a/web/translation/translate.ja_JP.toml +++ b/web/translation/translate.ja_JP.toml @@ -700,6 +700,9 @@ "limitTraffic" = "🚧 トラフィック制限" "getBanLogs" = "禁止ログ" "allClients" = "すべてのクライアント" +"msgSend" = "💬 通知を送信" +"msgUser" = "👤 ユーザーへ" +"msgAll" = "👥 すべてのボットユーザーへ" "addClient" = "クライアントを追加" "submitDisable" = "無効として送信 ☑️" diff --git a/web/translation/translate.pt_BR.toml b/web/translation/translate.pt_BR.toml index 5f13943e..71044abd 100644 --- a/web/translation/translate.pt_BR.toml +++ b/web/translation/translate.pt_BR.toml @@ -700,6 +700,9 @@ "limitTraffic" = "🚧 Limite de tráfego" "getBanLogs" = "Obter logs de banimento" "allClients" = "Todos os clientes" +"msgSend" = "💬 Enviar Notificações" +"msgUser" = "👤 Para Usuário" +"msgAll" = "👥 Para Todos os Usuários do Bot" "addClient" = "Adicionar Cliente" "submitDisable" = "Enviar como Desativado ☑️" diff --git a/web/translation/translate.ru_RU.toml b/web/translation/translate.ru_RU.toml index 687f7a97..838c5bc8 100644 --- a/web/translation/translate.ru_RU.toml +++ b/web/translation/translate.ru_RU.toml @@ -700,6 +700,9 @@ "limitTraffic" = "🚧 Лимит трафика" "getBanLogs" = "📄 Лог банов" "allClients" = "👥 Все клиенты" +"msgSend" = "💬 Отправка уведомлений" +"msgUser" = "👤 Пользователю" +"msgAll" = "👥 Всем пользовтелям бота" "addClient" = "➕ Новый клиент" "submitDisable" = "Добавить отключенным ☑️" @@ -708,7 +711,7 @@ "change_id" = "⚙️🔑 ID" "change_password" = "⚙️🔑 Пароль" "change_email" = "⚙️📧 Email" -"change_comment" = "⚙️💬 Комментарий" +"change_comment" = "⚙️💬 Комментарий" "ResetAllTraffics" = "Сбросить весь трафик" "SortedTrafficUsageReport" = "Отсортированный отчет об использовании трафика" @@ -735,3 +738,6 @@ "askToAddUserId" = "❌ Ваша конфигурация не найдена!\r\n💭 Пожалуйста, попросите администратора использовать ваш Telegram User ID в конфигурации.\r\n\r\n🆔 Ваш User ID: {{ .TgUserID }}" "chooseClient" = "Выберите клиента для инбаунда {{ .Inbound }}" "chooseInbound" = "Выберите инбаунд" +"chooseSend" = "Выберите способ отправки уведомления" +"chooseUser" = "Выберите пользователя или отправьте его email" +"enterText" = "Введите желаемый текст сообщения" \ No newline at end of file diff --git a/web/translation/translate.tr_TR.toml b/web/translation/translate.tr_TR.toml index af9d1d19..4b3cae68 100644 --- a/web/translation/translate.tr_TR.toml +++ b/web/translation/translate.tr_TR.toml @@ -700,6 +700,9 @@ "limitTraffic" = "🚧 Trafik Sınırı" "getBanLogs" = "Yasak Günlüklerini Al" "allClients" = "Tüm Müşteriler" +"msgSend" = "💬 Bildirimleri Gönder" +"msgUser" = "👤 Kullanıcıya" +"msgAll" = "👥 Tüm Bot Kullanıcılarına" "addClient" = "Müşteri Ekle" "submitDisable" = "Devre Dışı Olarak Gönder ☑️" diff --git a/web/translation/translate.uk_UA.toml b/web/translation/translate.uk_UA.toml index 83e984b2..06a5a334 100644 --- a/web/translation/translate.uk_UA.toml +++ b/web/translation/translate.uk_UA.toml @@ -700,6 +700,9 @@ "limitTraffic" = "🚧 Ліміт трафіку" "getBanLogs" = "Отримати журнали заборон" "allClients" = "Всі Клієнти" +"msgSend" = "💬 Надіслати сповіщення" +"msgUser" = "👤 Користувачу" +"msgAll" = "👥 Усім користувачам бота" "addClient" = "Додати клієнта" "submitDisable" = "Надіслати як вимкнено ☑️" diff --git a/web/translation/translate.vi_VN.toml b/web/translation/translate.vi_VN.toml index d4c95f79..21b104ef 100644 --- a/web/translation/translate.vi_VN.toml +++ b/web/translation/translate.vi_VN.toml @@ -700,6 +700,9 @@ "limitTraffic" = "🚧 Giới hạn lưu lượng" "getBanLogs" = "Cấm nhật ký" "allClients" = "Tất cả Khách hàng" +"msgSend" = "💬 Gửi thông báo" +"msgUser" = "👤 Đến người dùng" +"msgAll" = "👥 Đến tất cả người dùng bot" "addClient" = "Thêm Khách Hàng" "submitDisable" = "Gửi Dưới Dạng Vô Hiệu ☑️" diff --git a/web/translation/translate.zh_CN.toml b/web/translation/translate.zh_CN.toml index 26cc3322..673be51b 100644 --- a/web/translation/translate.zh_CN.toml +++ b/web/translation/translate.zh_CN.toml @@ -700,6 +700,9 @@ "limitTraffic" = "🚧 流量限制" "getBanLogs" = "禁止日志" "allClients" = "所有客户" +"msgSend" = "💬 发送通知" +"msgUser" = "👤 给用户" +"msgAll" = "👥 给所有机器人用户" "addClient" = "添加客户" "submitDisable" = "提交为禁用 ☑️" diff --git a/web/translation/translate.zh_TW.toml b/web/translation/translate.zh_TW.toml index 0875cf47..4c41b1f8 100644 --- a/web/translation/translate.zh_TW.toml +++ b/web/translation/translate.zh_TW.toml @@ -702,6 +702,9 @@ "limitTraffic" = "🚧 流量限制" "getBanLogs" = "禁止日誌" "allClients" = "所有客戶" +"msgSend" = "💬 發送通知" +"msgUser" = "👤 給使用者" +"msgAll" = "👥 給所有機器人使用者" "addClient" = "新增客戶" "submitDisable" = "以停用方式送出 ☑️"