mirror of
https://github.com/TeamOctolings/Octobot.git
synced 2025-05-06 14:06:29 +03:00
General code refactor (and a few breaking config changes)
This commit is contained in:
parent
0e144db2e2
commit
552c575dd2
15 changed files with 1164 additions and 879 deletions
|
@ -8,19 +8,17 @@ public sealed class BanCommand : ICommand {
|
|||
|
||||
public async Task RunAsync(CommandProcessor cmd, string[] args, string[] cleanArgs) {
|
||||
var toBan = cmd.GetUser(args, cleanArgs, 0, "ToBan");
|
||||
if (toBan == null || !cmd.HasPermission(GuildPermission.BanMembers)) return;
|
||||
if (toBan is null || !cmd.HasPermission(GuildPermission.BanMembers)) return;
|
||||
|
||||
var memberToBan = cmd.GetMember(toBan, null);
|
||||
if (memberToBan != null && !cmd.CanInteractWith(memberToBan, "Ban")) return;
|
||||
if (memberToBan is not null && !cmd.CanInteractWith(memberToBan, "Ban")) return;
|
||||
|
||||
var duration = CommandProcessor.GetTimeSpan(args, 1);
|
||||
var reason = cmd.GetRemaining(args, duration.TotalSeconds < 1 ? 1 : 2, "BanReason");
|
||||
if (reason == null) return;
|
||||
|
||||
await BanUser(cmd, toBan, duration, reason);
|
||||
if (reason is not null) await BanUserAsync(cmd, toBan, duration, reason);
|
||||
}
|
||||
|
||||
public static async Task BanUser(CommandProcessor cmd, SocketUser toBan, TimeSpan duration, string reason) {
|
||||
private static async Task BanUserAsync(CommandProcessor cmd, SocketUser toBan, TimeSpan duration, string reason) {
|
||||
var author = cmd.Context.User;
|
||||
var guild = cmd.Context.Guild;
|
||||
await Utils.SendDirectMessage(toBan,
|
||||
|
|
|
@ -12,7 +12,7 @@ public sealed class ClearCommand : ICommand {
|
|||
if (!cmd.HasPermission(GuildPermission.ManageMessages)) return;
|
||||
|
||||
var toDelete = cmd.GetNumberRange(cleanArgs, 0, 1, 200, "ClearAmount");
|
||||
if (toDelete == null) return;
|
||||
if (toDelete is null) return;
|
||||
var messages = await channel.GetMessagesAsync((int)(toDelete + 1)).FlattenAsync();
|
||||
|
||||
var user = (SocketGuildUser)cmd.Context.User;
|
||||
|
|
|
@ -8,15 +8,14 @@ public sealed class KickCommand : ICommand {
|
|||
|
||||
public async Task RunAsync(CommandProcessor cmd, string[] args, string[] cleanArgs) {
|
||||
var toKick = cmd.GetMember(args, cleanArgs, 0, "ToKick");
|
||||
if (toKick == null || !cmd.HasPermission(GuildPermission.KickMembers)) return;
|
||||
if (toKick is null || !cmd.HasPermission(GuildPermission.KickMembers)) return;
|
||||
|
||||
if (!cmd.CanInteractWith(toKick, "Kick")) return;
|
||||
|
||||
await KickMemberAsync(cmd, toKick, cmd.GetRemaining(args, 1, "KickReason"));
|
||||
if (cmd.CanInteractWith(toKick, "Kick"))
|
||||
await KickMemberAsync(cmd, toKick, cmd.GetRemaining(args, 1, "KickReason"));
|
||||
}
|
||||
|
||||
private static async Task KickMemberAsync(CommandProcessor cmd, SocketGuildUser toKick, string? reason) {
|
||||
if (reason == null) return;
|
||||
if (reason is null) return;
|
||||
var guildKickMessage = $"({cmd.Context.User}) {reason}";
|
||||
|
||||
await Utils.SendDirectMessage(toKick,
|
||||
|
|
|
@ -9,15 +9,15 @@ public sealed class MuteCommand : ICommand {
|
|||
|
||||
public async Task RunAsync(CommandProcessor cmd, string[] args, string[] cleanArgs) {
|
||||
var toMute = cmd.GetMember(args, cleanArgs, 0, "ToMute");
|
||||
if (toMute == null) return;
|
||||
if (toMute is null) return;
|
||||
|
||||
var duration = CommandProcessor.GetTimeSpan(args, 1);
|
||||
var reason = cmd.GetRemaining(args, duration.TotalSeconds < 1 ? 1 : 2, "MuteReason");
|
||||
if (reason == null) return;
|
||||
if (reason is null) return;
|
||||
var role = Utils.GetMuteRole(cmd.Context.Guild);
|
||||
|
||||
if ((role != null && toMute.Roles.Contains(role))
|
||||
|| (toMute.TimedOutUntil != null
|
||||
if ((role is not null && toMute.Roles.Contains(role))
|
||||
|| (toMute.TimedOutUntil is not null
|
||||
&& toMute.TimedOutUntil.Value.ToUnixTimeSeconds()
|
||||
> DateTimeOffset.Now.ToUnixTimeSeconds())) {
|
||||
cmd.Reply(Messages.MemberAlreadyMuted, ":x: ");
|
||||
|
@ -33,9 +33,8 @@ public sealed class MuteCommand : ICommand {
|
|||
cmd.Reply(Messages.RolesReturned, ":warning: ");
|
||||
}
|
||||
|
||||
if (!cmd.HasPermission(GuildPermission.ModerateMembers) || !cmd.CanInteractWith(toMute, "Mute")) return;
|
||||
|
||||
await MuteMemberAsync(cmd, toMute, duration, reason);
|
||||
if (cmd.HasPermission(GuildPermission.ModerateMembers) && cmd.CanInteractWith(toMute, "Mute"))
|
||||
await MuteMemberAsync(cmd, toMute, duration, reason);
|
||||
}
|
||||
|
||||
private static async Task MuteMemberAsync(CommandProcessor cmd, SocketGuildUser toMute,
|
||||
|
@ -46,7 +45,7 @@ public sealed class MuteCommand : ICommand {
|
|||
var role = Utils.GetMuteRole(guild);
|
||||
var hasDuration = duration.TotalSeconds > 0;
|
||||
|
||||
if (role != null) {
|
||||
if (role is not null) {
|
||||
if (config["RemoveRolesOnMute"] is "true") {
|
||||
var rolesRemoved = new List<ulong>();
|
||||
foreach (var userRole in toMute.Roles)
|
||||
|
|
|
@ -11,7 +11,7 @@ public sealed class SettingsCommand : ICommand {
|
|||
var guild = cmd.Context.Guild;
|
||||
var config = Boyfriend.GetGuildConfig(guild.Id);
|
||||
|
||||
if (args.Length == 0) {
|
||||
if (args.Length is 0) {
|
||||
var currentSettings = Boyfriend.StringBuilder.AppendLine(Messages.CurrentSettings);
|
||||
|
||||
foreach (var setting in Boyfriend.DefaultConfig) {
|
||||
|
@ -19,20 +19,14 @@ public sealed class SettingsCommand : ICommand {
|
|||
var currentValue = config[setting.Key];
|
||||
|
||||
if (setting.Key.EndsWith("Channel")) {
|
||||
if (guild.GetTextChannel(Convert.ToUInt64(currentValue)) != null)
|
||||
format = "<#{0}>";
|
||||
else
|
||||
currentValue = Messages.ChannelNotSpecified;
|
||||
if (guild.GetTextChannel(ulong.Parse(currentValue)) is not null) format = "<#{0}>";
|
||||
else currentValue = Messages.ChannelNotSpecified;
|
||||
} else if (setting.Key.EndsWith("Role")) {
|
||||
if (guild.GetRole(Convert.ToUInt64(currentValue)) != null)
|
||||
format = "<@&{0}>";
|
||||
else
|
||||
currentValue = Messages.RoleNotSpecified;
|
||||
if (guild.GetRole(ulong.Parse(currentValue)) is not null) format = "<@&{0}>";
|
||||
else currentValue = Messages.RoleNotSpecified;
|
||||
} else {
|
||||
if (IsBool(currentValue))
|
||||
currentValue = YesOrNo(currentValue is "true");
|
||||
else
|
||||
format = Utils.Wrap("{0}")!;
|
||||
if (!IsBool(currentValue)) format = Utils.Wrap("{0}")!;
|
||||
else currentValue = YesOrNo(currentValue is "true");
|
||||
}
|
||||
|
||||
currentSettings.Append($"{Utils.GetMessage($"Settings{setting.Key}")} (`{setting.Key}`): ")
|
||||
|
@ -65,11 +59,11 @@ public sealed class SettingsCommand : ICommand {
|
|||
|
||||
if (args.Length >= 2) {
|
||||
value = cmd.GetRemaining(args, 1, "Setting");
|
||||
if (value == null) return Task.CompletedTask;
|
||||
if (value is null) return Task.CompletedTask;
|
||||
if (selectedSetting is "EventStartedReceivers") {
|
||||
value = value.Replace(" ", "").ToLower();
|
||||
if (value.StartsWith(",") || value.Count(x => x == ',') > 1 ||
|
||||
(!value.Contains("interested") && !value.Contains("role"))) {
|
||||
if (value.StartsWith(",") || value.Count(x => x is ',') > 1 ||
|
||||
(!value.Contains("interested") && !value.Contains("users") && !value.Contains("role"))) {
|
||||
cmd.Reply(Messages.InvalidSettingValue, ":x: ");
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
@ -91,14 +85,12 @@ public sealed class SettingsCommand : ICommand {
|
|||
var localizedSelectedSetting = Utils.GetMessage($"Settings{selectedSetting}");
|
||||
|
||||
var mention = Utils.ParseMention(value);
|
||||
if (mention != 0 && selectedSetting is not "WelcomeMessage") value = mention.ToString();
|
||||
if (mention is not 0 && selectedSetting is not "WelcomeMessage") value = mention.ToString();
|
||||
|
||||
var formatting = Utils.Wrap("{0}")!;
|
||||
if (selectedSetting is not "WelcomeMessage") {
|
||||
if (selectedSetting.EndsWith("Channel"))
|
||||
formatting = "<#{0}>";
|
||||
if (selectedSetting.EndsWith("Role"))
|
||||
formatting = "<@&{0}>";
|
||||
if (selectedSetting.EndsWith("Channel")) formatting = "<#{0}>";
|
||||
if (selectedSetting.EndsWith("Role")) formatting = "<@&{0}>";
|
||||
}
|
||||
|
||||
var formattedValue = selectedSetting switch {
|
||||
|
@ -110,9 +102,7 @@ public sealed class SettingsCommand : ICommand {
|
|||
};
|
||||
|
||||
if (value is "reset" or "default") {
|
||||
config[selectedSetting] = selectedSetting is "WelcomeMessage"
|
||||
? Messages.DefaultWelcomeMessage
|
||||
: Boyfriend.DefaultConfig[selectedSetting];
|
||||
config[selectedSetting] = Boyfriend.DefaultConfig[selectedSetting];
|
||||
} else {
|
||||
if (value == config[selectedSetting]) {
|
||||
cmd.Reply(string.Format(Messages.SettingsNothingChanged, localizedSelectedSetting, formattedValue),
|
||||
|
@ -120,17 +110,17 @@ public sealed class SettingsCommand : ICommand {
|
|||
return Task.CompletedTask;
|
||||
}
|
||||
|
||||
if (selectedSetting is "Lang" && value is not "ru" and not "en" and not "mctaylors-ru") {
|
||||
if (selectedSetting is "Lang" && !Utils.CultureInfoCache.ContainsKey(value)) {
|
||||
cmd.Reply(Messages.LanguageNotSupported, ":x: ");
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
||||
if (selectedSetting.EndsWith("Channel") && guild.GetTextChannel(mention) == null) {
|
||||
if (selectedSetting.EndsWith("Channel") && guild.GetTextChannel(mention) is null) {
|
||||
cmd.Reply(Messages.InvalidChannel, ":x: ");
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
||||
if (selectedSetting.EndsWith("Role") && guild.GetRole(mention) == null) {
|
||||
if (selectedSetting.EndsWith("Role") && guild.GetRole(mention) is null) {
|
||||
cmd.Reply(Messages.InvalidRole, ":x: ");
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
|
|
@ -9,11 +9,9 @@ public sealed class UnbanCommand : ICommand {
|
|||
if (!cmd.HasPermission(GuildPermission.BanMembers)) return;
|
||||
|
||||
var id = cmd.GetBan(args, 0);
|
||||
if (id == null) return;
|
||||
if (id is null) return;
|
||||
var reason = cmd.GetRemaining(args, 1, "UnbanReason");
|
||||
if (reason == null) return;
|
||||
|
||||
await UnbanUserAsync(cmd, id.Value, reason);
|
||||
if (reason is not null) await UnbanUserAsync(cmd, id.Value, reason);
|
||||
}
|
||||
|
||||
public static async Task UnbanUserAsync(CommandProcessor cmd, ulong id, string reason) {
|
||||
|
|
|
@ -10,9 +10,10 @@ public sealed class UnmuteCommand : ICommand {
|
|||
if (!cmd.HasPermission(GuildPermission.ModerateMembers)) return;
|
||||
|
||||
var toUnmute = cmd.GetMember(args, cleanArgs, 0, "ToUnmute");
|
||||
if (toUnmute is null) return;
|
||||
var reason = cmd.GetRemaining(args, 1, "UnmuteReason");
|
||||
if (toUnmute == null || reason == null || !cmd.CanInteractWith(toUnmute, "Unmute")) return;
|
||||
await UnmuteMemberAsync(cmd, toUnmute, reason);
|
||||
if (reason is not null && cmd.CanInteractWith(toUnmute, "Unmute"))
|
||||
await UnmuteMemberAsync(cmd, toUnmute, reason);
|
||||
}
|
||||
|
||||
public static async Task UnmuteMemberAsync(CommandProcessor cmd, SocketGuildUser toUnmute,
|
||||
|
@ -20,7 +21,7 @@ public sealed class UnmuteCommand : ICommand {
|
|||
var requestOptions = Utils.GetRequestOptions($"({cmd.Context.User}) {reason}");
|
||||
var role = Utils.GetMuteRole(cmd.Context.Guild);
|
||||
|
||||
if (role != null && toUnmute.Roles.Contains(role)) {
|
||||
if (role is not null && toUnmute.Roles.Contains(role)) {
|
||||
var rolesRemoved = Boyfriend.GetRemovedRoles(cmd.Context.Guild.Id);
|
||||
|
||||
if (rolesRemoved.TryGetValue(toUnmute.Id, out var unmutedRemovedRoles)) {
|
||||
|
@ -31,7 +32,7 @@ public sealed class UnmuteCommand : ICommand {
|
|||
|
||||
await toUnmute.RemoveRoleAsync(role, requestOptions);
|
||||
} else {
|
||||
if (toUnmute.TimedOutUntil == null || toUnmute.TimedOutUntil.Value.ToUnixTimeSeconds() <
|
||||
if (toUnmute.TimedOutUntil is null || toUnmute.TimedOutUntil.Value.ToUnixTimeSeconds() <
|
||||
DateTimeOffset.Now.ToUnixTimeSeconds()) {
|
||||
cmd.Reply(Messages.MemberNotMuted, ":x: ");
|
||||
return;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue