diff --git a/Boyfriend.cs b/Boyfriend.cs index e32a155..58de254 100644 --- a/Boyfriend.cs +++ b/Boyfriend.cs @@ -150,12 +150,13 @@ public static class Boyfriend { mentions.Clear(); } - _ = ulong.TryParse(config["StarterRole"], out var starterRoleId); foreach (var mData in data.MemberData.Values) { var user = guild.GetUser(mData.Id); if (now >= mData.BannedUntil) _ = guild.RemoveBanAsync(mData.Id); if (!mData.IsInGuild) continue; - if (!mData.Roles.Contains(starterRoleId) && mData.MutedUntil is null) _ = user.AddRoleAsync(starterRoleId); + if (mData.MutedUntil is null + && ulong.TryParse(config["StarterRole"], out var starterRoleId) + && !mData.Roles.Contains(starterRoleId)) _ = user.AddRoleAsync(starterRoleId); if (now >= mData.MutedUntil) { await Utils.UnmuteMemberAsync( diff --git a/CommandProcessor.cs b/CommandProcessor.cs index 4f13f16..38e1430 100644 --- a/CommandProcessor.cs +++ b/CommandProcessor.cs @@ -9,6 +9,7 @@ namespace Boyfriend; public sealed class CommandProcessor { private static readonly string Mention = $"<@{Boyfriend.Client.CurrentUser.Id}>"; + private static readonly TimeSpan Infinity = TimeSpan.FromMilliseconds(-1); public static readonly ICommand[] Commands = { new BanCommand(), new ClearCommand(), new HelpCommand(), @@ -246,14 +247,13 @@ public sealed class CommandProcessor { } public static TimeSpan GetTimeSpan(string[] args, int index) { - var infinity = TimeSpan.FromMilliseconds(-1); - if (index >= args.Length) return infinity; + if (index >= args.Length) return Infinity; var chars = args[index].AsSpan(); var numberBuilder = Boyfriend.StringBuilder; int days = 0, hours = 0, minutes = 0, seconds = 0; foreach (var c in chars) if (char.IsDigit(c)) { numberBuilder.Append(c); } else { - if (numberBuilder.Length is 0) return infinity; + if (numberBuilder.Length is 0) return Infinity; switch (c) { case 'd' or 'D' or 'д' or 'Д': days += int.Parse(numberBuilder.ToString()); @@ -271,7 +271,7 @@ public sealed class CommandProcessor { seconds += int.Parse(numberBuilder.ToString()); numberBuilder.Clear(); break; - default: return infinity; + default: return Infinity; } } diff --git a/Commands/RemindCommand.cs b/Commands/RemindCommand.cs index efc9fd2..5a116fc 100644 --- a/Commands/RemindCommand.cs +++ b/Commands/RemindCommand.cs @@ -8,9 +8,14 @@ public sealed class RemindCommand : ICommand { public Task RunAsync(CommandProcessor cmd, string[] args, string[] cleanArgs) { // TODO: actually make this good var remindIn = CommandProcessor.GetTimeSpan(args, 0); + if (remindIn.TotalSeconds < 1) { + cmd.Reply(Messages.InvalidRemindIn, ReplyEmojis.InvalidArgument); + return Task.CompletedTask; + } + var reminderText = cmd.GetRemaining(cleanArgs, 1, "ReminderText"); - var reminderOffset = DateTimeOffset.Now.Add(remindIn); if (reminderText is not null) { + var reminderOffset = DateTimeOffset.Now.Add(remindIn); GuildData.Get(cmd.Context.Guild).MemberData[cmd.Context.User.Id].Reminders.Add( new Reminder { RemindAt = reminderOffset, diff --git a/Messages.Designer.cs b/Messages.Designer.cs index daeaa3a..5e21849 100644 --- a/Messages.Designer.cs +++ b/Messages.Designer.cs @@ -1111,5 +1111,14 @@ namespace Boyfriend { return ResourceManager.GetString("FeedbackReminderAdded", resourceCulture); } } + + /// + /// Looks up a localized string similar to You need to specify when I should send you the reminder!. + /// + internal static string InvalidRemindIn { + get { + return ResourceManager.GetString("InvalidRemindIn", resourceCulture); + } + } } } diff --git a/Messages.resx b/Messages.resx index 82beb50..2db1a50 100644 --- a/Messages.resx +++ b/Messages.resx @@ -328,7 +328,7 @@ You need to specify a guild member! - You did not specify a member of this guild! + You need to specify a member of this guild! You cannot ban users from this guild! @@ -468,4 +468,7 @@ OK, I'll mention you on <t:{0}:f> + + You need to specify when I should send you the reminder! + diff --git a/Messages.ru.resx b/Messages.ru.resx index 1d34695..72c10ff 100644 --- a/Messages.ru.resx +++ b/Messages.ru.resx @@ -328,7 +328,7 @@ Надо указать участника сервера! - Тебе надо указать участника этого сервера! + Надо указать участника этого сервера! Ты не можешь банить пользователей на этом сервере! @@ -459,13 +459,16 @@ Возвращать роли при перезаходе - + Автоматически начинать события - + Тебе нужно указать текст напоминания! - + Хорошо, я упомяну тебя <t:{0}:f> + + Нужно указать время, через которое придёт напоминание! + diff --git a/Messages.tt-ru.resx b/Messages.tt-ru.resx index 0301ea7..fa4af35 100644 --- a/Messages.tt-ru.resx +++ b/Messages.tt-ru.resx @@ -459,13 +459,16 @@ вернуть звания при переподключении в дурку - + автоматом стартить квесты - + для крафта напоминалки нужен текст - + вас понял, упоминание будет <t:{0}:f> + + шизоид у меня на часах такого нету +