diff --git a/src/TelegramPanel.Web/Components/Dialogs/UserChatActiveTaskEditor.razor b/src/TelegramPanel.Web/Components/Dialogs/UserChatActiveTaskEditor.razor index a775373..a690aab 100644 --- a/src/TelegramPanel.Web/Components/Dialogs/UserChatActiveTaskEditor.razor +++ b/src/TelegramPanel.Web/Components/Dialogs/UserChatActiveTaskEditor.razor @@ -1,4 +1,4 @@ -@namespace TelegramPanel.Web.Components.Dialogs +@namespace TelegramPanel.Web.Components.Dialogs @inject AccountCategoryManagementService CategoryManagement @using System.Text.Json @using TelegramPanel.Data.Entities @@ -43,11 +43,11 @@ + Label="最小间隔(秒)" Variant="Variant.Outlined" Min="0" Max="600" /> + Label="最大间隔(秒)" Variant="Variant.Outlined" Min="0" Max="600" /> ()); dictionaryText = string.Join(Environment.NewLine, cfg.Dictionary ?? new List()); - delayMinMs = cfg.DelayMinMs; - delayMaxMs = cfg.DelayMaxMs; + delayMinMs = ConvertMillisecondsToSeconds(cfg.DelayMinMs); + delayMaxMs = ConvertMillisecondsToSeconds(cfg.DelayMaxMs); maxMessages = cfg.MaxMessages; accountMode = NormalizeMode(cfg.AccountMode); targetMode = NormalizeMode(cfg.TargetMode); @@ -229,8 +229,8 @@ CategoryName = category.Name, Targets = targets, Dictionary = dictionary, - DelayMinMs = delayMinMs, - DelayMaxMs = delayMaxMs, + DelayMinMs = delayMinMs * 1000, + DelayMaxMs = delayMaxMs * 1000, MaxMessages = maxMessages, AccountMode = accountMode, TargetMode = targetMode, @@ -242,6 +242,14 @@ await DraftChanged.InvokeAsync(new ModuleTaskDraft(total, json, true, null)); } + private static int ConvertMillisecondsToSeconds(int value) + { + if (value <= 0) + return 0; + + return Math.Max(1, (int)Math.Ceiling(value / 1000d)); + } + private static bool IsValidMode(string? value) { return string.Equals(value, UserChatActiveTaskModes.Random, StringComparison.OrdinalIgnoreCase) @@ -280,3 +288,5 @@ .ToList(); } } + + diff --git a/src/TelegramPanel.Web/Components/Pages/Tasks.razor b/src/TelegramPanel.Web/Components/Pages/Tasks.razor index 8bb430d..e82f243 100644 --- a/src/TelegramPanel.Web/Components/Pages/Tasks.razor +++ b/src/TelegramPanel.Web/Components/Pages/Tasks.razor @@ -378,7 +378,7 @@ private static string GetDisplayStatus(BatchTask task) { if (task.Status == "pending" - && task.TaskType == BatchTaskTypes.UserChatActive + && IsUserChatActiveTask(task.TaskType) && task.Total == 0) { return "running"; @@ -431,7 +431,7 @@ taskType is BatchTaskTypes.BotChannelSetAdminsByAccount or BatchTaskTypes.BotSetAdmins; private static bool IsUserChatActiveTask(string taskType) => - taskType is BatchTaskTypes.UserChatActive; + string.Equals((taskType ?? string.Empty).Trim(), BatchTaskTypes.UserChatActive, StringComparison.OrdinalIgnoreCase); private static bool CanPauseUserChatActiveTask(BatchTask task) { @@ -578,7 +578,7 @@ details += $"账号模式: {NormalizeTaskModeDisplay(accountMode)}\n"; details += $"目标模式: {NormalizeTaskModeDisplay(targetMode)}\n"; details += $"词典模式: {NormalizeTaskModeDisplay(messageMode)}\n"; - details += $"间隔: {delayMin} ~ {delayMax} ms\n"; + details += $"间隔: {FormatDelaySeconds(delayMin)} ~ {FormatDelaySeconds(delayMax)} 秒\n"; details += $"最多发送: {(maxMessages <= 0 ? "持续运行(直到取消)" : maxMessages.ToString())}\n"; if (lines.Count > 0) @@ -595,6 +595,15 @@ } } + private static string FormatDelaySeconds(int milliseconds) + { + if (milliseconds <= 0) + return "0"; + + var seconds = milliseconds / 1000d; + return seconds.ToString("0.###"); + } + private static string NormalizeTaskModeDisplay(string? mode) { var text = (mode ?? "").Trim(); @@ -905,3 +914,6 @@ + + +