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>
+
+ шизоид у меня на часах такого нету
+