mirror of
https://github.com/TeamOctolings/Octobot.git
synced 2025-05-10 16:03:15 +03:00
Finish adapting code to new guild data storage
This commit is contained in:
parent
587e5d11f9
commit
1f45a605d7
17 changed files with 201 additions and 96 deletions
|
@ -30,7 +30,7 @@ public sealed class BanCommand : ICommand {
|
|||
var guildBanMessage = $"({author}) {reason}";
|
||||
await guild.AddBanAsync(toBan.Item1, 0, guildBanMessage);
|
||||
|
||||
var memberData = GuildData.FromSocketGuild(guild).MemberData[toBan.Item1];
|
||||
var memberData = GuildData.Get(guild).MemberData[toBan.Item1];
|
||||
memberData.BannedUntil
|
||||
= duration.TotalSeconds < 1 ? DateTimeOffset.MaxValue : DateTimeOffset.Now.Add(duration);
|
||||
memberData.Roles.Clear();
|
||||
|
|
|
@ -7,7 +7,7 @@ public sealed class HelpCommand : ICommand {
|
|||
public string[] Aliases { get; } = { "help", "помощь", "справка" };
|
||||
|
||||
public Task RunAsync(CommandProcessor cmd, string[] args, string[] cleanArgs) {
|
||||
var prefix = GuildData.FromSocketGuild(cmd.Context.Guild).Preferences["Prefix"];
|
||||
var prefix = GuildData.Get(cmd.Context.Guild).Preferences["Prefix"];
|
||||
var toSend = Boyfriend.StringBuilder.Append(Messages.CommandHelp);
|
||||
|
||||
foreach (var command in CommandProcessor.Commands)
|
||||
|
|
|
@ -23,7 +23,7 @@ public sealed class KickCommand : ICommand {
|
|||
string.Format(Messages.YouWereKicked, cmd.Context.User.Mention, cmd.Context.Guild.Name,
|
||||
Utils.Wrap(reason)));
|
||||
|
||||
GuildData.FromSocketGuild(cmd.Context.Guild).MemberData[toKick.Id].Roles.Clear();
|
||||
GuildData.Get(cmd.Context.Guild).MemberData[toKick.Id].Roles.Clear();
|
||||
|
||||
await toKick.KickAsync(guildKickMessage);
|
||||
var format = string.Format(Messages.FeedbackMemberKicked, toKick.Mention, Utils.Wrap(reason));
|
||||
|
|
|
@ -14,7 +14,7 @@ public sealed class MuteCommand : ICommand {
|
|||
var duration = CommandProcessor.GetTimeSpan(args, 1);
|
||||
var reason = cmd.GetRemaining(args, duration.TotalSeconds < 1 ? 1 : 2, "MuteReason");
|
||||
if (reason is null) return;
|
||||
var guildData = GuildData.FromSocketGuild(cmd.Context.Guild);
|
||||
var guildData = GuildData.Get(cmd.Context.Guild);
|
||||
var role = guildData.MuteRole;
|
||||
|
||||
if ((role is not null && toMute.Roles.Contains(role))
|
||||
|
|
|
@ -7,11 +7,12 @@ public sealed class RemindCommand : ICommand {
|
|||
|
||||
public Task RunAsync(CommandProcessor cmd, string[] args, string[] cleanArgs) {
|
||||
var remindIn = CommandProcessor.GetTimeSpan(args, 0);
|
||||
var reminderText = cmd.GetRemaining(args, 1, "ReminderText");
|
||||
var reminderText = cmd.GetRemaining(cleanArgs, 1, "ReminderText");
|
||||
if (reminderText is not null)
|
||||
GuildData.FromSocketGuild(cmd.Context.Guild).MemberData[cmd.Context.User.Id].Reminders.Add(new Reminder {
|
||||
GuildData.Get(cmd.Context.Guild).MemberData[cmd.Context.User.Id].Reminders.Add(new Reminder {
|
||||
RemindAt = DateTimeOffset.Now.Add(remindIn),
|
||||
ReminderText = reminderText
|
||||
ReminderText = reminderText,
|
||||
ReminderChannel = cmd.Context.Channel.Id
|
||||
});
|
||||
|
||||
return Task.CompletedTask;
|
||||
|
|
|
@ -10,7 +10,7 @@ public sealed class SettingsCommand : ICommand {
|
|||
if (!cmd.HasPermission(GuildPermission.ManageGuild)) return Task.CompletedTask;
|
||||
|
||||
var guild = cmd.Context.Guild;
|
||||
var data = GuildData.FromSocketGuild(guild);
|
||||
var data = GuildData.Get(guild);
|
||||
var config = data.Preferences;
|
||||
|
||||
if (args.Length is 0) {
|
||||
|
@ -45,10 +45,7 @@ public sealed class SettingsCommand : ICommand {
|
|||
var selectedSetting = args[0].ToLower();
|
||||
|
||||
var exists = false;
|
||||
// ReSharper disable once ForeachCanBePartlyConvertedToQueryUsingAnotherGetEnumerator
|
||||
// Too many allocations
|
||||
foreach (var setting in GuildData.DefaultPreferences.Keys) {
|
||||
if (selectedSetting != setting.ToLower()) continue;
|
||||
foreach (var setting in GuildData.DefaultPreferences.Keys.Where(x => x.ToLower() == selectedSetting)) {
|
||||
selectedSetting = setting;
|
||||
exists = true;
|
||||
break;
|
||||
|
@ -133,6 +130,11 @@ public sealed class SettingsCommand : ICommand {
|
|||
return Task.CompletedTask;
|
||||
}
|
||||
|
||||
if (selectedSetting.EndsWith("Offset") && !int.TryParse(value, out _)) {
|
||||
cmd.Reply(Messages.InvalidSettingValue, ReplyEmojis.Error);
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
||||
if (selectedSetting is "MuteRole") data.MuteRole = guild.GetRole(mention);
|
||||
|
||||
config[selectedSetting] = value;
|
||||
|
|
|
@ -17,22 +17,14 @@ public sealed class UnmuteCommand : ICommand {
|
|||
await UnmuteMemberAsync(cmd, toUnmute, reason);
|
||||
}
|
||||
|
||||
public static async Task UnmuteMemberAsync(CommandProcessor cmd, SocketGuildUser toUnmute,
|
||||
private static async Task UnmuteMemberAsync(CommandProcessor cmd, SocketGuildUser toUnmute,
|
||||
string reason) {
|
||||
var requestOptions = Utils.GetRequestOptions($"({cmd.Context.User}) {reason}");
|
||||
var data = GuildData.FromSocketGuild(cmd.Context.Guild);
|
||||
var role = data.MuteRole;
|
||||
var isMuted = await Utils.UnmuteMemberAsync(GuildData.Get(cmd.Context.Guild), cmd.Context.User.ToString(),
|
||||
toUnmute, reason);
|
||||
|
||||
if (role is not null && toUnmute.Roles.Contains(role)) {
|
||||
await toUnmute.AddRolesAsync(data.MemberData[toUnmute.Id].Roles, requestOptions);
|
||||
await toUnmute.RemoveRoleAsync(role, requestOptions);
|
||||
} else {
|
||||
if (toUnmute.TimedOutUntil is null || toUnmute.TimedOutUntil.Value < DateTimeOffset.Now) {
|
||||
cmd.Reply(Messages.MemberNotMuted, ReplyEmojis.Error);
|
||||
return;
|
||||
}
|
||||
|
||||
await toUnmute.RemoveTimeOutAsync(requestOptions);
|
||||
if (!isMuted) {
|
||||
cmd.Reply(Messages.MemberNotMuted, ReplyEmojis.Error);
|
||||
return;
|
||||
}
|
||||
|
||||
var feedback = string.Format(Messages.FeedbackMemberUnmuted, toUnmute.Mention, Utils.Wrap(reason));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue