diff --git a/Boyfriend.cs b/Boyfriend.cs index bc3eca8..1db68ea 100644 --- a/Boyfriend.cs +++ b/Boyfriend.cs @@ -1,6 +1,5 @@ using Boyfriend.Commands; using Boyfriend.Services; -using Boyfriend.Services.Data; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; @@ -80,7 +79,8 @@ public class Boyfriend { .WithCommandGroup() .WithCommandGroup() .WithCommandGroup() - .WithCommandGroup(); + .WithCommandGroup() + .WithCommandGroup(); var responderTypes = typeof(Boyfriend).Assembly .GetExportedTypes() .Where(t => t.IsResponder()); diff --git a/ColorsList.cs b/ColorsList.cs index fc66573..bdd5bce 100644 --- a/ColorsList.cs +++ b/ColorsList.cs @@ -1,8 +1,5 @@ using System.Drawing; -// TODO: remove this when all colors are used -// ReSharper disable UnusedMember.Global - namespace Boyfriend; /// diff --git a/Commands/AboutCommandGroup.cs b/Commands/AboutCommandGroup.cs index 30a8379..6f02c2c 100644 --- a/Commands/AboutCommandGroup.cs +++ b/Commands/AboutCommandGroup.cs @@ -1,6 +1,6 @@ using System.ComponentModel; using System.Text; -using Boyfriend.Services.Data; +using Boyfriend.Services; using Remora.Commands.Attributes; using Remora.Commands.Groups; using Remora.Discord.API.Abstractions.Rest; diff --git a/Commands/BanCommandGroup.cs b/Commands/BanCommandGroup.cs index 1a7c38b..e752dc4 100644 --- a/Commands/BanCommandGroup.cs +++ b/Commands/BanCommandGroup.cs @@ -1,7 +1,6 @@ using System.ComponentModel; using System.Text; using Boyfriend.Services; -using Boyfriend.Services.Data; using Remora.Commands.Attributes; using Remora.Commands.Groups; using Remora.Discord.API.Abstractions.Objects; diff --git a/Commands/ClearCommandGroup.cs b/Commands/ClearCommandGroup.cs index a0170ad..c869525 100644 --- a/Commands/ClearCommandGroup.cs +++ b/Commands/ClearCommandGroup.cs @@ -1,6 +1,6 @@ using System.ComponentModel; using System.Text; -using Boyfriend.Services.Data; +using Boyfriend.Services; using Remora.Commands.Attributes; using Remora.Commands.Groups; using Remora.Discord.API.Abstractions.Objects; diff --git a/Commands/KickCommandGroup.cs b/Commands/KickCommandGroup.cs index 8db60b8..1db85f7 100644 --- a/Commands/KickCommandGroup.cs +++ b/Commands/KickCommandGroup.cs @@ -1,6 +1,5 @@ using System.ComponentModel; using Boyfriend.Services; -using Boyfriend.Services.Data; using Remora.Commands.Attributes; using Remora.Commands.Groups; using Remora.Discord.API.Abstractions.Objects; diff --git a/Commands/MuteCommandGroup.cs b/Commands/MuteCommandGroup.cs index 0c89845..ff06fea 100644 --- a/Commands/MuteCommandGroup.cs +++ b/Commands/MuteCommandGroup.cs @@ -1,7 +1,6 @@ using System.ComponentModel; using System.Text; using Boyfriend.Services; -using Boyfriend.Services.Data; using Remora.Commands.Attributes; using Remora.Commands.Groups; using Remora.Discord.API.Abstractions.Objects; diff --git a/Commands/PingCommandGroup.cs b/Commands/PingCommandGroup.cs index f5d071d..a5ed739 100644 --- a/Commands/PingCommandGroup.cs +++ b/Commands/PingCommandGroup.cs @@ -1,5 +1,5 @@ using System.ComponentModel; -using Boyfriend.Services.Data; +using Boyfriend.Services; using Remora.Commands.Attributes; using Remora.Commands.Groups; using Remora.Discord.API.Abstractions.Rest; diff --git a/Commands/RemindCommandGroup.cs b/Commands/RemindCommandGroup.cs new file mode 100644 index 0000000..5ac4d19 --- /dev/null +++ b/Commands/RemindCommandGroup.cs @@ -0,0 +1,66 @@ +using System.ComponentModel; +using Boyfriend.Data; +using Boyfriend.Services; +using Remora.Commands.Attributes; +using Remora.Commands.Groups; +using Remora.Discord.API.Abstractions.Rest; +using Remora.Discord.Commands.Contexts; +using Remora.Discord.Commands.Feedback.Services; +using Remora.Discord.Extensions.Embeds; +using Remora.Discord.Extensions.Formatting; +using Remora.Results; + +// ReSharper disable ClassNeverInstantiated.Global +// ReSharper disable UnusedMember.Global + +namespace Boyfriend.Commands; + +/// +/// Handles the command to manage reminders: /remind +/// +public class RemindCommandGroup : CommandGroup { + private readonly ICommandContext _context; + private readonly GuildDataService _dataService; + private readonly FeedbackService _feedbackService; + private readonly IDiscordRestUserAPI _userApi; + + public RemindCommandGroup( + ICommandContext context, GuildDataService dataService, FeedbackService feedbackService, + IDiscordRestUserAPI userApi) { + _context = context; + _dataService = dataService; + _feedbackService = feedbackService; + _userApi = userApi; + } + + [Command("remind")] + [Description("крафтит напоминалки")] + public async Task AddReminderAsync(TimeSpan duration, string text) { + if (!_context.TryGetContextIDs(out var guildId, out var channelId, out var userId)) + return Result.FromError( + new ArgumentNullError(nameof(_context), "Unable to retrieve necessary IDs from command context")); + + var userResult = await _userApi.GetUserAsync(userId.Value, CancellationToken); + if (!userResult.IsDefined(out var user)) + return Result.FromError(userResult); + + var remindAt = DateTimeOffset.UtcNow.Add(duration); + + (await _dataService.GetMemberData(guildId.Value, userId.Value, CancellationToken)).Reminders.Add( + new Reminder { + RemindAt = remindAt, + Channel = channelId.Value, + Text = text + }); + + var embed = new EmbedBuilder().WithSmallTitle(string.Format(Messages.ReminderCreated, user.GetTag()), user) + .WithDescription(string.Format(Messages.DescriptionReminderCreated, Markdown.Timestamp(remindAt))) + .WithColour(ColorsList.Green) + .Build(); + + if (!embed.IsDefined(out var built)) + return Result.FromError(embed); + + return (Result)await _feedbackService.SendContextualEmbedAsync(built, ct: CancellationToken); + } +} diff --git a/Data/MemberData.cs b/Data/MemberData.cs index 755fb74..72cbdec 100644 --- a/Data/MemberData.cs +++ b/Data/MemberData.cs @@ -14,4 +14,5 @@ public class MemberData { public ulong Id { get; } public DateTimeOffset? BannedUntil { get; set; } public List Roles { get; set; } = new(); + public List Reminders { get; } = new(); } diff --git a/Data/Reminder.cs b/Data/Reminder.cs new file mode 100644 index 0000000..1d0410c --- /dev/null +++ b/Data/Reminder.cs @@ -0,0 +1,9 @@ +using Remora.Rest.Core; + +namespace Boyfriend.Data; + +public struct Reminder { + public DateTimeOffset RemindAt; + public string Text; + public Snowflake Channel; +} diff --git a/EventResponders.cs b/EventResponders.cs index d45c5f8..708bbc1 100644 --- a/EventResponders.cs +++ b/EventResponders.cs @@ -1,5 +1,5 @@ using Boyfriend.Data; -using Boyfriend.Services.Data; +using Boyfriend.Services; using DiffPlex.DiffBuilder; using Microsoft.Extensions.Logging; using Remora.Discord.API.Abstractions.Gateway.Events; diff --git a/Messages.Designer.cs b/Messages.Designer.cs index 675c09e..7d1f780 100644 --- a/Messages.Designer.cs +++ b/Messages.Designer.cs @@ -11,46 +11,32 @@ namespace Boyfriend { using System; - /// - /// A strongly-typed resource class, for looking up localized strings, etc. - /// - // This class was auto-generated by the StronglyTypedResourceBuilder - // class via a tool like ResGen or Visual Studio. - // To add or remove a member, edit your .ResX file then rerun ResGen - // with the /str option, or rebuild your VS project. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [System.Diagnostics.DebuggerNonUserCodeAttribute()] + [System.Runtime.CompilerServices.CompilerGeneratedAttribute()] internal class Messages { - private static global::System.Resources.ResourceManager resourceMan; + private static System.Resources.ResourceManager resourceMan; - private static global::System.Globalization.CultureInfo resourceCulture; + private static System.Globalization.CultureInfo resourceCulture; - [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] internal Messages() { } - /// - /// Returns the cached ResourceManager instance used by this class. - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Resources.ResourceManager ResourceManager { + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + internal static System.Resources.ResourceManager ResourceManager { get { - if (object.ReferenceEquals(resourceMan, null)) { - global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Boyfriend.Messages", typeof(Messages).Assembly); + if (object.Equals(null, resourceMan)) { + System.Resources.ResourceManager temp = new System.Resources.ResourceManager("Boyfriend.Messages", typeof(Messages).Assembly); resourceMan = temp; } return resourceMan; } } - /// - /// Overrides the current thread's CurrentUICulture property for all - /// resource lookups using this strongly typed resource class. - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Globalization.CultureInfo Culture { + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + internal static System.Globalization.CultureInfo Culture { get { return resourceCulture; } @@ -59,1300 +45,886 @@ namespace Boyfriend { } } - /// - /// Looks up a localized string similar to About Boyfriend. - /// - internal static string AboutBot { - get { - return ResourceManager.GetString("AboutBot", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to logo and embed designer, Boyfriend's Wiki creator. - /// - internal static string AboutDeveloper_mctaylors { - get { - return ResourceManager.GetString("AboutDeveloper@mctaylors", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to developer. - /// - internal static string AboutDeveloper_neroduckale { - get { - return ResourceManager.GetString("AboutDeveloper@neroduckale", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to main developer. - /// - internal static string AboutDeveloper_Octol1ttle { - get { - return ResourceManager.GetString("AboutDeveloper@Octol1ttle", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Developers:. - /// - internal static string AboutTitleDevelopers { - get { - return ResourceManager.GetString("AboutTitleDevelopers", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Boyfriend's Wiki Page:. - /// - internal static string AboutTitleWiki { - get { - return ResourceManager.GetString("AboutTitleWiki", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Bah!. - /// - internal static string Beep1 { - get { - return ResourceManager.GetString("Beep1", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Bop!. - /// - internal static string Beep2 { - get { - return ResourceManager.GetString("Beep2", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Beep!. - /// - internal static string Beep3 { - get { - return ResourceManager.GetString("Beep3", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to I cannot ban users from this guild!. - /// - internal static string BotCannotBanMembers { - get { - return ResourceManager.GetString("BotCannotBanMembers", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to I cannot ban this user!. - /// - internal static string BotCannotBanTarget { - get { - return ResourceManager.GetString("BotCannotBanTarget", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to I cannot kick members from this guild!. - /// - internal static string BotCannotKickMembers { - get { - return ResourceManager.GetString("BotCannotKickMembers", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to I cannot kick this member!. - /// - internal static string BotCannotKickTarget { - get { - return ResourceManager.GetString("BotCannotKickTarget", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to I cannot manage this guild!. - /// - internal static string BotCannotManageGuild { - get { - return ResourceManager.GetString("BotCannotManageGuild", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to I cannot manage messages in this guild!. - /// - internal static string BotCannotManageMessages { - get { - return ResourceManager.GetString("BotCannotManageMessages", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to I cannot moderate members in this guild!. - /// - internal static string BotCannotModerateMembers { - get { - return ResourceManager.GetString("BotCannotModerateMembers", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to I cannot mute this member!. - /// - internal static string BotCannotMuteTarget { - get { - return ResourceManager.GetString("BotCannotMuteTarget", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to I cannot unmute this member!. - /// - internal static string BotCannotUnmuteTarget { - get { - return ResourceManager.GetString("BotCannotUnmuteTarget", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Cleared message from {0} in channel {1}: {2}. - /// - internal static string CachedMessageCleared { - get { - return ResourceManager.GetString("CachedMessageCleared", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Deleted message by {0}:. - /// - internal static string CachedMessageDeleted { - get { - return ResourceManager.GetString("CachedMessageDeleted", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Edited message by {0}:. - /// - internal static string CachedMessageEdited { - get { - return ResourceManager.GetString("CachedMessageEdited", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to I cannot use time-outs on other bots! Try to set a mute role in settings. - /// - internal static string CannotTimeOutBot { - get { - return ResourceManager.GetString("CannotTimeOutBot", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Not specified. - /// - internal static string ChannelNotSpecified { - get { - return ResourceManager.GetString("ChannelNotSpecified", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to You need to specify an integer from {0} to {1} instead of {2}!. - /// - internal static string ClearAmountInvalid { - get { - return ResourceManager.GetString("ClearAmountInvalid", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to You specified more than {0} messages!. - /// - internal static string ClearAmountTooLarge { - get { - return ResourceManager.GetString("ClearAmountTooLarge", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to You specified less than {0} messages!. - /// - internal static string ClearAmountTooSmall { - get { - return ResourceManager.GetString("ClearAmountTooSmall", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Bans a user. - /// - internal static string CommandDescriptionBan { - get { - return ResourceManager.GetString("CommandDescriptionBan", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Deletes a specified amount of messages in this channel. - /// - internal static string CommandDescriptionClear { - get { - return ResourceManager.GetString("CommandDescriptionClear", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Shows this message. - /// - internal static string CommandDescriptionHelp { - get { - return ResourceManager.GetString("CommandDescriptionHelp", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Kicks a member. - /// - internal static string CommandDescriptionKick { - get { - return ResourceManager.GetString("CommandDescriptionKick", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Mutes a member. - /// - internal static string CommandDescriptionMute { - get { - return ResourceManager.GetString("CommandDescriptionMute", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Shows (inaccurate) latency. - /// - internal static string CommandDescriptionPing { - get { - return ResourceManager.GetString("CommandDescriptionPing", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Adds a reminder. - /// - internal static string CommandDescriptionRemind { - get { - return ResourceManager.GetString("CommandDescriptionRemind", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Allows you to change certain preferences for this guild. - /// - internal static string CommandDescriptionSettings { - get { - return ResourceManager.GetString("CommandDescriptionSettings", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Unbans a user. - /// - internal static string CommandDescriptionUnban { - get { - return ResourceManager.GetString("CommandDescriptionUnban", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Unmutes a member. - /// - internal static string CommandDescriptionUnmute { - get { - return ResourceManager.GetString("CommandDescriptionUnmute", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Command help:. - /// - internal static string CommandHelp { - get { - return ResourceManager.GetString("CommandHelp", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to I do not have permission to execute this command!. - /// - internal static string CommandNoPermissionBot { - get { - return ResourceManager.GetString("CommandNoPermissionBot", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to You do not have permission to execute this command!. - /// - internal static string CommandNoPermissionUser { - get { - return ResourceManager.GetString("CommandNoPermissionUser", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Current settings:. - /// - internal static string CurrentSettings { - get { - return ResourceManager.GetString("CurrentSettings", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to {0}, welcome to {1}. - /// - internal static string DefaultWelcomeMessage { - get { - return ResourceManager.GetString("DefaultWelcomeMessage", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Expires at: {0}. - /// - internal static string DescriptionActionExpiresAt { - get { - return ResourceManager.GetString("DescriptionActionExpiresAt", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Reason: {0}. - /// - internal static string DescriptionActionReason { - get { - return ResourceManager.GetString("DescriptionActionReason", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to The event will start at {0} until {1} in {2}. - /// - internal static string DescriptionExternalEventCreated { - get { - return ResourceManager.GetString("DescriptionExternalEventCreated", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to The event is happening at {0} until {1}. - /// - internal static string DescriptionExternalEventStarted { - get { - return ResourceManager.GetString("DescriptionExternalEventStarted", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to The event will start at {0} in {1}. - /// - internal static string DescriptionLocalEventCreated { - get { - return ResourceManager.GetString("DescriptionLocalEventCreated", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to The event is happening at {0}. - /// - internal static string DescriptionLocalEventStarted { - get { - return ResourceManager.GetString("DescriptionLocalEventStarted", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to I cannot mute someone for more than 28 days using timeouts! Either specify a duration shorter than 28 days, or set a mute role in settings. - /// - internal static string DurationRequiredForTimeOuts { - get { - return ResourceManager.GetString("DurationRequiredForTimeOuts", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Event "{0}" is cancelled!. - /// - internal static string EventCancelled { - get { - return ResourceManager.GetString("EventCancelled", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Event "{0}" has completed!. - /// - internal static string EventCompleted { - get { - return ResourceManager.GetString("EventCompleted", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to {0} has created event {1}! It will take place in {2} and will start <t:{3}:R>! \n {4}. - /// - internal static string EventCreated { - get { - return ResourceManager.GetString("EventCreated", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to {0} has created a new event:. - /// - internal static string EventCreatedTitle { - get { - return ResourceManager.GetString("EventCreatedTitle", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Event details. - /// - internal static string EventDetailsButton { - get { - return ResourceManager.GetString("EventDetailsButton", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to The event has lasted for `{0}`. - /// - internal static string EventDuration { - get { - return ResourceManager.GetString("EventDuration", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to {0}Event {1} will start <t:{2}:R>!. - /// - internal static string EventEarlyNotification { - get { - return ResourceManager.GetString("EventEarlyNotification", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Event "{0}" started. - /// - internal static string EventStarted { - get { - return ResourceManager.GetString("EventStarted", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to ever. - /// - internal static string Ever { - get { - return ResourceManager.GetString("Ever", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Kicked {0}: {1}. - /// - internal static string FeedbackMemberKicked { - get { - return ResourceManager.GetString("FeedbackMemberKicked", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Muted {0} for{1}: {2}. - /// - internal static string FeedbackMemberMuted { - get { - return ResourceManager.GetString("FeedbackMemberMuted", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Unmuted {0}: {1}. - /// - internal static string FeedbackMemberUnmuted { - get { - return ResourceManager.GetString("FeedbackMemberUnmuted", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to OK, I'll mention you on <t:{0}:f>. - /// - internal static string FeedbackReminderAdded { - get { - return ResourceManager.GetString("FeedbackReminderAdded", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Value of setting `{0}` is now set to {1}. - /// - internal static string FeedbackSettingsUpdated { - get { - return ResourceManager.GetString("FeedbackSettingsUpdated", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Unbanned {0}: {1}. - /// - internal static string FeedbackUserUnbanned { - get { - return ResourceManager.GetString("FeedbackUserUnbanned", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to This channel does not exist!. - /// - internal static string InvalidChannel { - get { - return ResourceManager.GetString("InvalidChannel", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to You need to specify a member of this guild!. - /// - internal static string InvalidMember { - get { - return ResourceManager.GetString("InvalidMember", 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); - } - } - - /// - /// Looks up a localized string similar to This role does not exist!. - /// - internal static string InvalidRole { - get { - return ResourceManager.GetString("InvalidRole", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Invalid setting value specified!. - /// - internal static string InvalidSettingValue { - get { - return ResourceManager.GetString("InvalidSettingValue", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to You need to specify a user instead of {0}!. - /// - internal static string InvalidUser { - get { - return ResourceManager.GetString("InvalidUser", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Issued by. - /// - internal static string IssuedBy { - get { - return ResourceManager.GetString("IssuedBy", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Language not supported! Supported languages:. - /// - internal static string LanguageNotSupported { - get { - return ResourceManager.GetString("LanguageNotSupported", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Member is already muted!. - /// - internal static string MemberAlreadyMuted { - get { - return ResourceManager.GetString("MemberAlreadyMuted", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Member not muted!. - /// - internal static string MemberNotMuted { - get { - return ResourceManager.GetString("MemberNotMuted", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to From {0}:. - /// - internal static string MessageFrom { - get { - return ResourceManager.GetString("MessageFrom", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Cleared {0} messages. - /// - internal static string MessagesCleared { - get { - return ResourceManager.GetString("MessagesCleared", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to ms. - /// - internal static string Milliseconds { - get { - return ResourceManager.GetString("Milliseconds", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to You need to specify a reason to ban this user!. - /// - internal static string MissingBanReason { - get { - return ResourceManager.GetString("MissingBanReason", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to You need to specify a reason to kick this member!. - /// - internal static string MissingKickReason { - get { - return ResourceManager.GetString("MissingKickReason", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to You need to specify a guild member!. - /// - internal static string MissingMember { - get { - return ResourceManager.GetString("MissingMember", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to You need to specify a reason to mute this member!. - /// - internal static string MissingMuteReason { - get { - return ResourceManager.GetString("MissingMuteReason", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to You need to specify an integer from {0} to {1}!. - /// - internal static string MissingNumber { - get { - return ResourceManager.GetString("MissingNumber", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to You need to specify reminder text!. - /// - internal static string MissingReminderText { - get { - return ResourceManager.GetString("MissingReminderText", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to You need to specify a reason to unban this user!. - /// - internal static string MissingUnbanReason { - get { - return ResourceManager.GetString("MissingUnbanReason", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to You need to specify a reason for unmute this member!. - /// - internal static string MissingUnmuteReason { - get { - return ResourceManager.GetString("MissingUnmuteReason", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to You need to specify a user!. - /// - internal static string MissingUser { - get { - return ResourceManager.GetString("MissingUser", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to No. - /// - internal static string No { - get { - return ResourceManager.GetString("No", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Punishment expired. - /// - internal static string PunishmentExpired { - get { - return ResourceManager.GetString("PunishmentExpired", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to I'm ready!. - /// internal static string Ready { get { return ResourceManager.GetString("Ready", resourceCulture); } } - /// - /// Looks up a localized string similar to Not specified. - /// - internal static string RoleNotSpecified { + internal static string CachedMessageDeleted { get { - return ResourceManager.GetString("RoleNotSpecified", resourceCulture); + return ResourceManager.GetString("CachedMessageDeleted", resourceCulture); } } - /// - /// Looks up a localized string similar to That setting doesn't exist!. - /// - internal static string SettingDoesntExist { + internal static string CachedMessageCleared { get { - return ResourceManager.GetString("SettingDoesntExist", resourceCulture); + return ResourceManager.GetString("CachedMessageCleared", resourceCulture); } } - /// - /// Looks up a localized string similar to Not specified. - /// - internal static string SettingNotDefined { + internal static string CachedMessageEdited { get { - return ResourceManager.GetString("SettingNotDefined", resourceCulture); + return ResourceManager.GetString("CachedMessageEdited", resourceCulture); } } - /// - /// Looks up a localized string similar to Automatically start scheduled events. - /// - internal static string SettingsAutoStartEvents { + internal static string DefaultWelcomeMessage { get { - return ResourceManager.GetString("SettingsAutoStartEvents", resourceCulture); + return ResourceManager.GetString("DefaultWelcomeMessage", resourceCulture); } } - /// - /// Looks up a localized string similar to Default role. - /// - internal static string SettingsDefaultRole { + internal static string Beep1 { get { - return ResourceManager.GetString("SettingsDefaultRole", resourceCulture); + return ResourceManager.GetString("Beep1", resourceCulture); } } - /// - /// Looks up a localized string similar to Early event start notification offset. - /// - internal static string SettingsEventEarlyNotificationOffset { + internal static string Beep2 { get { - return ResourceManager.GetString("SettingsEventEarlyNotificationOffset", resourceCulture); + return ResourceManager.GetString("Beep2", resourceCulture); } } - /// - /// Looks up a localized string similar to Channel for event notifications. - /// - internal static string SettingsEventNotificationChannel { + internal static string Beep3 { get { - return ResourceManager.GetString("SettingsEventNotificationChannel", resourceCulture); + return ResourceManager.GetString("Beep3", resourceCulture); } } - /// - /// Looks up a localized string similar to Role for event creation notifications. - /// - internal static string SettingsEventNotificationRole { + internal static string CommandNoPermissionBot { get { - return ResourceManager.GetString("SettingsEventNotificationRole", resourceCulture); + return ResourceManager.GetString("CommandNoPermissionBot", resourceCulture); } } - /// - /// Looks up a localized string similar to Event start notifications receivers. - /// - internal static string SettingsEventStartedReceivers { + internal static string CommandNoPermissionUser { get { - return ResourceManager.GetString("SettingsEventStartedReceivers", resourceCulture); + return ResourceManager.GetString("CommandNoPermissionUser", resourceCulture); } } - /// - /// Looks up a localized string similar to :(. - /// - internal static string SettingsFrowningFace { - get { - return ResourceManager.GetString("SettingsFrowningFace", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Language. - /// - internal static string SettingsLang { - get { - return ResourceManager.GetString("SettingsLang", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Mute role. - /// - internal static string SettingsMuteRole { - get { - return ResourceManager.GetString("SettingsMuteRole", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Nothing changed! `{0}` is already set to {1}. - /// - internal static string SettingsNothingChanged { - get { - return ResourceManager.GetString("SettingsNothingChanged", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Prefix. - /// - internal static string SettingsPrefix { - get { - return ResourceManager.GetString("SettingsPrefix", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Channel for private notifications. - /// - internal static string SettingsPrivateFeedbackChannel { - get { - return ResourceManager.GetString("SettingsPrivateFeedbackChannel", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Channel for public notifications. - /// - internal static string SettingsPublicFeedbackChannel { - get { - return ResourceManager.GetString("SettingsPublicFeedbackChannel", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Receive startup messages. - /// - internal static string SettingsReceiveStartupMessages { - get { - return ResourceManager.GetString("SettingsReceiveStartupMessages", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Remove roles on mute. - /// - internal static string SettingsRemoveRolesOnMute { - get { - return ResourceManager.GetString("SettingsRemoveRolesOnMute", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Return roles on rejoin. - /// - internal static string SettingsReturnRolesOnRejoin { - get { - return ResourceManager.GetString("SettingsReturnRolesOnRejoin", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Send welcome messages. - /// - internal static string SettingsSendWelcomeMessages { - get { - return ResourceManager.GetString("SettingsSendWelcomeMessages", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Welcome message. - /// - internal static string SettingsWelcomeMessage { - get { - return ResourceManager.GetString("SettingsWelcomeMessage", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to This user is already banned!. - /// - internal static string UserAlreadyBanned { - get { - return ResourceManager.GetString("UserAlreadyBanned", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to This user is already muted!. - /// - internal static string UserAlreadyMuted { - get { - return ResourceManager.GetString("UserAlreadyMuted", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to {0} was banned. - /// - internal static string UserBanned { - get { - return ResourceManager.GetString("UserBanned", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to You cannot ban me!. - /// - internal static string UserCannotBanBot { - get { - return ResourceManager.GetString("UserCannotBanBot", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to You cannot ban users from this guild!. - /// - internal static string UserCannotBanMembers { - get { - return ResourceManager.GetString("UserCannotBanMembers", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to You cannot ban the owner of this guild!. - /// - internal static string UserCannotBanOwner { - get { - return ResourceManager.GetString("UserCannotBanOwner", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to You cannot ban this user!. - /// - internal static string UserCannotBanTarget { - get { - return ResourceManager.GetString("UserCannotBanTarget", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to You cannot ban yourself!. - /// - internal static string UserCannotBanThemselves { - get { - return ResourceManager.GetString("UserCannotBanThemselves", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to You cannot kick me!. - /// - internal static string UserCannotKickBot { - get { - return ResourceManager.GetString("UserCannotKickBot", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to You cannot kick members from this guild!. - /// - internal static string UserCannotKickMembers { - get { - return ResourceManager.GetString("UserCannotKickMembers", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to You cannot kick the owner of this guild!. - /// - internal static string UserCannotKickOwner { - get { - return ResourceManager.GetString("UserCannotKickOwner", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to You cannot kick this member!. - /// - internal static string UserCannotKickTarget { - get { - return ResourceManager.GetString("UserCannotKickTarget", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to You cannot kick yourself!. - /// - internal static string UserCannotKickThemselves { - get { - return ResourceManager.GetString("UserCannotKickThemselves", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to You cannot manage this guild!. - /// - internal static string UserCannotManageGuild { - get { - return ResourceManager.GetString("UserCannotManageGuild", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to You cannot manage messages in this guild!. - /// - internal static string UserCannotManageMessages { - get { - return ResourceManager.GetString("UserCannotManageMessages", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to You cannot moderate members in this guild!. - /// - internal static string UserCannotModerateMembers { - get { - return ResourceManager.GetString("UserCannotModerateMembers", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to You cannot mute me!. - /// - internal static string UserCannotMuteBot { - get { - return ResourceManager.GetString("UserCannotMuteBot", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to You cannot mute the owner of this guild!. - /// - internal static string UserCannotMuteOwner { - get { - return ResourceManager.GetString("UserCannotMuteOwner", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to You cannot mute this member!. - /// - internal static string UserCannotMuteTarget { - get { - return ResourceManager.GetString("UserCannotMuteTarget", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to You cannot mute yourself!. - /// - internal static string UserCannotMuteThemselves { - get { - return ResourceManager.GetString("UserCannotMuteThemselves", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to .... - /// - internal static string UserCannotUnmuteBot { - get { - return ResourceManager.GetString("UserCannotUnmuteBot", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to You don't need to unmute the owner of this guild!. - /// - internal static string UserCannotUnmuteOwner { - get { - return ResourceManager.GetString("UserCannotUnmuteOwner", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to You cannot unmute this user!. - /// - internal static string UserCannotUnmuteTarget { - get { - return ResourceManager.GetString("UserCannotUnmuteTarget", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to You are muted!. - /// - internal static string UserCannotUnmuteThemselves { - get { - return ResourceManager.GetString("UserCannotUnmuteThemselves", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to {0} was kicked. - /// - internal static string UserKicked { - get { - return ResourceManager.GetString("UserKicked", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to {0} was muted. - /// - internal static string UserMuted { - get { - return ResourceManager.GetString("UserMuted", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to This user is not banned!. - /// - internal static string UserNotBanned { - get { - return ResourceManager.GetString("UserNotBanned", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to I could not find this user in any guild I'm a member of! Check if the ID is correct and that the user was on this server no longer than 30 days ago. - /// - internal static string UserNotFound { - get { - return ResourceManager.GetString("UserNotFound", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to I could not find this user!. - /// - internal static string UserNotFoundShort { - get { - return ResourceManager.GetString("UserNotFoundShort", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to This member is not muted!. - /// - internal static string UserNotMuted { - get { - return ResourceManager.GetString("UserNotMuted", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to {0} was unbanned. - /// - internal static string UserUnbanned { - get { - return ResourceManager.GetString("UserUnbanned", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to {0} was unmuted. - /// - internal static string UserUnmuted { - get { - return ResourceManager.GetString("UserUnmuted", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Yes. - /// - internal static string Yes { - get { - return ResourceManager.GetString("Yes", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to You were banned. - /// internal static string YouWereBanned { get { return ResourceManager.GetString("YouWereBanned", resourceCulture); } } - /// - /// Looks up a localized string similar to You were kicked. - /// + internal static string PunishmentExpired { + get { + return ResourceManager.GetString("PunishmentExpired", resourceCulture); + } + } + + internal static string ClearAmountTooSmall { + get { + return ResourceManager.GetString("ClearAmountTooSmall", resourceCulture); + } + } + + internal static string ClearAmountTooLarge { + get { + return ResourceManager.GetString("ClearAmountTooLarge", resourceCulture); + } + } + + internal static string CommandHelp { + get { + return ResourceManager.GetString("CommandHelp", resourceCulture); + } + } + internal static string YouWereKicked { get { return ResourceManager.GetString("YouWereKicked", resourceCulture); } } + + internal static string Milliseconds { + get { + return ResourceManager.GetString("Milliseconds", resourceCulture); + } + } + + internal static string MemberAlreadyMuted { + get { + return ResourceManager.GetString("MemberAlreadyMuted", resourceCulture); + } + } + + internal static string ChannelNotSpecified { + get { + return ResourceManager.GetString("ChannelNotSpecified", resourceCulture); + } + } + + internal static string RoleNotSpecified { + get { + return ResourceManager.GetString("RoleNotSpecified", resourceCulture); + } + } + + internal static string CurrentSettings { + get { + return ResourceManager.GetString("CurrentSettings", resourceCulture); + } + } + + internal static string SettingsLang { + get { + return ResourceManager.GetString("SettingsLang", resourceCulture); + } + } + + internal static string SettingsPrefix { + get { + return ResourceManager.GetString("SettingsPrefix", resourceCulture); + } + } + + internal static string SettingsRemoveRolesOnMute { + get { + return ResourceManager.GetString("SettingsRemoveRolesOnMute", resourceCulture); + } + } + + internal static string SettingsSendWelcomeMessages { + get { + return ResourceManager.GetString("SettingsSendWelcomeMessages", resourceCulture); + } + } + + internal static string SettingsMuteRole { + get { + return ResourceManager.GetString("SettingsMuteRole", resourceCulture); + } + } + + internal static string LanguageNotSupported { + get { + return ResourceManager.GetString("LanguageNotSupported", resourceCulture); + } + } + + internal static string Yes { + get { + return ResourceManager.GetString("Yes", resourceCulture); + } + } + + internal static string No { + get { + return ResourceManager.GetString("No", resourceCulture); + } + } + + internal static string UserNotBanned { + get { + return ResourceManager.GetString("UserNotBanned", resourceCulture); + } + } + + internal static string MemberNotMuted { + get { + return ResourceManager.GetString("MemberNotMuted", resourceCulture); + } + } + + internal static string SettingsWelcomeMessage { + get { + return ResourceManager.GetString("SettingsWelcomeMessage", resourceCulture); + } + } + + internal static string ClearAmountInvalid { + get { + return ResourceManager.GetString("ClearAmountInvalid", resourceCulture); + } + } + + internal static string UserBanned { + get { + return ResourceManager.GetString("UserBanned", resourceCulture); + } + } + + internal static string SettingDoesntExist { + get { + return ResourceManager.GetString("SettingDoesntExist", resourceCulture); + } + } + + internal static string SettingsReceiveStartupMessages { + get { + return ResourceManager.GetString("SettingsReceiveStartupMessages", resourceCulture); + } + } + + internal static string InvalidSettingValue { + get { + return ResourceManager.GetString("InvalidSettingValue", resourceCulture); + } + } + + internal static string InvalidRole { + get { + return ResourceManager.GetString("InvalidRole", resourceCulture); + } + } + + internal static string InvalidChannel { + get { + return ResourceManager.GetString("InvalidChannel", resourceCulture); + } + } + + internal static string DurationRequiredForTimeOuts { + get { + return ResourceManager.GetString("DurationRequiredForTimeOuts", resourceCulture); + } + } + + internal static string CannotTimeOutBot { + get { + return ResourceManager.GetString("CannotTimeOutBot", resourceCulture); + } + } + + internal static string EventCreated { + get { + return ResourceManager.GetString("EventCreated", resourceCulture); + } + } + + internal static string SettingsEventNotificationRole { + get { + return ResourceManager.GetString("SettingsEventNotificationRole", resourceCulture); + } + } + + internal static string SettingsEventNotificationChannel { + get { + return ResourceManager.GetString("SettingsEventNotificationChannel", resourceCulture); + } + } + + internal static string SettingsEventStartedReceivers { + get { + return ResourceManager.GetString("SettingsEventStartedReceivers", resourceCulture); + } + } + + internal static string EventStarted { + get { + return ResourceManager.GetString("EventStarted", resourceCulture); + } + } + + internal static string SettingsFrowningFace { + get { + return ResourceManager.GetString("SettingsFrowningFace", resourceCulture); + } + } + + internal static string EventCancelled { + get { + return ResourceManager.GetString("EventCancelled", resourceCulture); + } + } + + internal static string EventCompleted { + get { + return ResourceManager.GetString("EventCompleted", resourceCulture); + } + } + + internal static string Ever { + get { + return ResourceManager.GetString("Ever", resourceCulture); + } + } + + internal static string MessagesCleared { + get { + return ResourceManager.GetString("MessagesCleared", resourceCulture); + } + } + + internal static string FeedbackMemberKicked { + get { + return ResourceManager.GetString("FeedbackMemberKicked", resourceCulture); + } + } + + internal static string FeedbackMemberMuted { + get { + return ResourceManager.GetString("FeedbackMemberMuted", resourceCulture); + } + } + + internal static string FeedbackUserUnbanned { + get { + return ResourceManager.GetString("FeedbackUserUnbanned", resourceCulture); + } + } + + internal static string FeedbackMemberUnmuted { + get { + return ResourceManager.GetString("FeedbackMemberUnmuted", resourceCulture); + } + } + + internal static string SettingsNothingChanged { + get { + return ResourceManager.GetString("SettingsNothingChanged", resourceCulture); + } + } + + internal static string SettingNotDefined { + get { + return ResourceManager.GetString("SettingNotDefined", resourceCulture); + } + } + + internal static string FeedbackSettingsUpdated { + get { + return ResourceManager.GetString("FeedbackSettingsUpdated", resourceCulture); + } + } + + internal static string CommandDescriptionBan { + get { + return ResourceManager.GetString("CommandDescriptionBan", resourceCulture); + } + } + + internal static string CommandDescriptionClear { + get { + return ResourceManager.GetString("CommandDescriptionClear", resourceCulture); + } + } + + internal static string CommandDescriptionHelp { + get { + return ResourceManager.GetString("CommandDescriptionHelp", resourceCulture); + } + } + + internal static string CommandDescriptionKick { + get { + return ResourceManager.GetString("CommandDescriptionKick", resourceCulture); + } + } + + internal static string CommandDescriptionMute { + get { + return ResourceManager.GetString("CommandDescriptionMute", resourceCulture); + } + } + + internal static string CommandDescriptionPing { + get { + return ResourceManager.GetString("CommandDescriptionPing", resourceCulture); + } + } + + internal static string CommandDescriptionSettings { + get { + return ResourceManager.GetString("CommandDescriptionSettings", resourceCulture); + } + } + + internal static string CommandDescriptionUnban { + get { + return ResourceManager.GetString("CommandDescriptionUnban", resourceCulture); + } + } + + internal static string CommandDescriptionUnmute { + get { + return ResourceManager.GetString("CommandDescriptionUnmute", resourceCulture); + } + } + + internal static string MissingNumber { + get { + return ResourceManager.GetString("MissingNumber", resourceCulture); + } + } + + internal static string MissingUser { + get { + return ResourceManager.GetString("MissingUser", resourceCulture); + } + } + + internal static string InvalidUser { + get { + return ResourceManager.GetString("InvalidUser", resourceCulture); + } + } + + internal static string MissingMember { + get { + return ResourceManager.GetString("MissingMember", resourceCulture); + } + } + + internal static string InvalidMember { + get { + return ResourceManager.GetString("InvalidMember", resourceCulture); + } + } + + internal static string UserCannotBanMembers { + get { + return ResourceManager.GetString("UserCannotBanMembers", resourceCulture); + } + } + + internal static string UserCannotManageMessages { + get { + return ResourceManager.GetString("UserCannotManageMessages", resourceCulture); + } + } + + internal static string UserCannotKickMembers { + get { + return ResourceManager.GetString("UserCannotKickMembers", resourceCulture); + } + } + + internal static string UserCannotModerateMembers { + get { + return ResourceManager.GetString("UserCannotModerateMembers", resourceCulture); + } + } + + internal static string UserCannotManageGuild { + get { + return ResourceManager.GetString("UserCannotManageGuild", resourceCulture); + } + } + + internal static string BotCannotBanMembers { + get { + return ResourceManager.GetString("BotCannotBanMembers", resourceCulture); + } + } + + internal static string BotCannotManageMessages { + get { + return ResourceManager.GetString("BotCannotManageMessages", resourceCulture); + } + } + + internal static string BotCannotKickMembers { + get { + return ResourceManager.GetString("BotCannotKickMembers", resourceCulture); + } + } + + internal static string BotCannotModerateMembers { + get { + return ResourceManager.GetString("BotCannotModerateMembers", resourceCulture); + } + } + + internal static string BotCannotManageGuild { + get { + return ResourceManager.GetString("BotCannotManageGuild", resourceCulture); + } + } + + internal static string MissingBanReason { + get { + return ResourceManager.GetString("MissingBanReason", resourceCulture); + } + } + + internal static string MissingKickReason { + get { + return ResourceManager.GetString("MissingKickReason", resourceCulture); + } + } + + internal static string MissingMuteReason { + get { + return ResourceManager.GetString("MissingMuteReason", resourceCulture); + } + } + + internal static string MissingUnbanReason { + get { + return ResourceManager.GetString("MissingUnbanReason", resourceCulture); + } + } + + internal static string MissingUnmuteReason { + get { + return ResourceManager.GetString("MissingUnmuteReason", resourceCulture); + } + } + + internal static string UserCannotBanOwner { + get { + return ResourceManager.GetString("UserCannotBanOwner", resourceCulture); + } + } + + internal static string UserCannotBanThemselves { + get { + return ResourceManager.GetString("UserCannotBanThemselves", resourceCulture); + } + } + + internal static string UserCannotBanBot { + get { + return ResourceManager.GetString("UserCannotBanBot", resourceCulture); + } + } + + internal static string BotCannotBanTarget { + get { + return ResourceManager.GetString("BotCannotBanTarget", resourceCulture); + } + } + + internal static string UserCannotBanTarget { + get { + return ResourceManager.GetString("UserCannotBanTarget", resourceCulture); + } + } + + internal static string UserCannotKickOwner { + get { + return ResourceManager.GetString("UserCannotKickOwner", resourceCulture); + } + } + + internal static string UserCannotKickThemselves { + get { + return ResourceManager.GetString("UserCannotKickThemselves", resourceCulture); + } + } + + internal static string UserCannotKickBot { + get { + return ResourceManager.GetString("UserCannotKickBot", resourceCulture); + } + } + + internal static string BotCannotKickTarget { + get { + return ResourceManager.GetString("BotCannotKickTarget", resourceCulture); + } + } + + internal static string UserCannotKickTarget { + get { + return ResourceManager.GetString("UserCannotKickTarget", resourceCulture); + } + } + + internal static string UserCannotMuteOwner { + get { + return ResourceManager.GetString("UserCannotMuteOwner", resourceCulture); + } + } + + internal static string UserCannotMuteThemselves { + get { + return ResourceManager.GetString("UserCannotMuteThemselves", resourceCulture); + } + } + + internal static string UserCannotMuteBot { + get { + return ResourceManager.GetString("UserCannotMuteBot", resourceCulture); + } + } + + internal static string BotCannotMuteTarget { + get { + return ResourceManager.GetString("BotCannotMuteTarget", resourceCulture); + } + } + + internal static string UserCannotMuteTarget { + get { + return ResourceManager.GetString("UserCannotMuteTarget", resourceCulture); + } + } + + internal static string UserCannotUnmuteOwner { + get { + return ResourceManager.GetString("UserCannotUnmuteOwner", resourceCulture); + } + } + + internal static string UserCannotUnmuteThemselves { + get { + return ResourceManager.GetString("UserCannotUnmuteThemselves", resourceCulture); + } + } + + internal static string UserCannotUnmuteBot { + get { + return ResourceManager.GetString("UserCannotUnmuteBot", resourceCulture); + } + } + + internal static string BotCannotUnmuteTarget { + get { + return ResourceManager.GetString("BotCannotUnmuteTarget", resourceCulture); + } + } + + internal static string UserCannotUnmuteTarget { + get { + return ResourceManager.GetString("UserCannotUnmuteTarget", resourceCulture); + } + } + + internal static string EventEarlyNotification { + get { + return ResourceManager.GetString("EventEarlyNotification", resourceCulture); + } + } + + internal static string SettingsEventEarlyNotificationOffset { + get { + return ResourceManager.GetString("SettingsEventEarlyNotificationOffset", resourceCulture); + } + } + + internal static string UserNotFound { + get { + return ResourceManager.GetString("UserNotFound", resourceCulture); + } + } + + internal static string SettingsDefaultRole { + get { + return ResourceManager.GetString("SettingsDefaultRole", resourceCulture); + } + } + + internal static string CommandDescriptionRemind { + get { + return ResourceManager.GetString("CommandDescriptionRemind", resourceCulture); + } + } + + internal static string SettingsPublicFeedbackChannel { + get { + return ResourceManager.GetString("SettingsPublicFeedbackChannel", resourceCulture); + } + } + + internal static string SettingsPrivateFeedbackChannel { + get { + return ResourceManager.GetString("SettingsPrivateFeedbackChannel", resourceCulture); + } + } + + internal static string SettingsReturnRolesOnRejoin { + get { + return ResourceManager.GetString("SettingsReturnRolesOnRejoin", resourceCulture); + } + } + + internal static string SettingsAutoStartEvents { + get { + return ResourceManager.GetString("SettingsAutoStartEvents", resourceCulture); + } + } + + internal static string MissingReminderText { + get { + return ResourceManager.GetString("MissingReminderText", resourceCulture); + } + } + + internal static string DescriptionReminderCreated { + get { + return ResourceManager.GetString("DescriptionReminderCreated", resourceCulture); + } + } + + internal static string InvalidRemindIn { + get { + return ResourceManager.GetString("InvalidRemindIn", resourceCulture); + } + } + + internal static string IssuedBy { + get { + return ResourceManager.GetString("IssuedBy", resourceCulture); + } + } + + internal static string EventCreatedTitle { + get { + return ResourceManager.GetString("EventCreatedTitle", resourceCulture); + } + } + + internal static string DescriptionLocalEventCreated { + get { + return ResourceManager.GetString("DescriptionLocalEventCreated", resourceCulture); + } + } + + internal static string DescriptionExternalEventCreated { + get { + return ResourceManager.GetString("DescriptionExternalEventCreated", resourceCulture); + } + } + + internal static string EventDetailsButton { + get { + return ResourceManager.GetString("EventDetailsButton", resourceCulture); + } + } + + internal static string EventDuration { + get { + return ResourceManager.GetString("EventDuration", resourceCulture); + } + } + + internal static string DescriptionLocalEventStarted { + get { + return ResourceManager.GetString("DescriptionLocalEventStarted", resourceCulture); + } + } + + internal static string DescriptionExternalEventStarted { + get { + return ResourceManager.GetString("DescriptionExternalEventStarted", resourceCulture); + } + } + + internal static string UserAlreadyBanned { + get { + return ResourceManager.GetString("UserAlreadyBanned", resourceCulture); + } + } + + internal static string UserUnbanned { + get { + return ResourceManager.GetString("UserUnbanned", resourceCulture); + } + } + + internal static string UserMuted { + get { + return ResourceManager.GetString("UserMuted", resourceCulture); + } + } + + internal static string UserUnmuted { + get { + return ResourceManager.GetString("UserUnmuted", resourceCulture); + } + } + + internal static string UserNotMuted { + get { + return ResourceManager.GetString("UserNotMuted", resourceCulture); + } + } + + internal static string UserNotFoundShort { + get { + return ResourceManager.GetString("UserNotFoundShort", resourceCulture); + } + } + + internal static string UserKicked { + get { + return ResourceManager.GetString("UserKicked", resourceCulture); + } + } + + internal static string DescriptionActionReason { + get { + return ResourceManager.GetString("DescriptionActionReason", resourceCulture); + } + } + + internal static string DescriptionActionExpiresAt { + get { + return ResourceManager.GetString("DescriptionActionExpiresAt", resourceCulture); + } + } + + internal static string UserAlreadyMuted { + get { + return ResourceManager.GetString("UserAlreadyMuted", resourceCulture); + } + } + + internal static string MessageFrom { + get { + return ResourceManager.GetString("MessageFrom", resourceCulture); + } + } + + internal static string AboutTitleDevelopers { + get { + return ResourceManager.GetString("AboutTitleDevelopers", resourceCulture); + } + } + + internal static string AboutTitleWiki { + get { + return ResourceManager.GetString("AboutTitleWiki", resourceCulture); + } + } + + internal static string AboutBot { + get { + return ResourceManager.GetString("AboutBot", resourceCulture); + } + } + + internal static string AboutDeveloper_mctaylors { + get { + return ResourceManager.GetString("AboutDeveloper@mctaylors", resourceCulture); + } + } + + internal static string AboutDeveloper_Octol1ttle { + get { + return ResourceManager.GetString("AboutDeveloper@Octol1ttle", resourceCulture); + } + } + + internal static string AboutDeveloper_neroduckale { + get { + return ResourceManager.GetString("AboutDeveloper@neroduckale", resourceCulture); + } + } + + internal static string ReminderCreated { + get { + return ResourceManager.GetString("ReminderCreated", resourceCulture); + } + } + + internal static string Reminder { + get { + return ResourceManager.GetString("Reminder", resourceCulture); + } + } + + internal static string DescriptionReminder { + get { + return ResourceManager.GetString("DescriptionReminder", resourceCulture); + } + } } } diff --git a/Messages.resx b/Messages.resx index fad4ee9..a929b94 100644 --- a/Messages.resx +++ b/Messages.resx @@ -456,9 +456,9 @@ You need to specify reminder text! - - OK, I'll mention you on <t:{0}:f> - + + OK, I'll mention you on {0} + You need to specify when I should send you the reminder! @@ -537,4 +537,13 @@ developer + + Reminder for {0} created + + + Reminder for {0} + + + You asked me to remind you {0} + diff --git a/Messages.ru.resx b/Messages.ru.resx index 6b77ed8..f2ec456 100644 --- a/Messages.ru.resx +++ b/Messages.ru.resx @@ -453,9 +453,9 @@ Тебе нужно указать текст напоминания! - - Хорошо, я упомяну тебя <t:{0}:f> - + + Хорошо, я упомяну тебя {0} + Нужно указать время, через которое придёт напоминание! @@ -537,4 +537,13 @@ дизайнер лого и эмбедов, создатель Boyfriend's Wiki + + Напоминание для {0} создано + + + Напоминание для {0} + + + Вы просили напомнить вам {0} + diff --git a/Messages.tt-ru.resx b/Messages.tt-ru.resx index ecd2203..ce3a6e8 100644 --- a/Messages.tt-ru.resx +++ b/Messages.tt-ru.resx @@ -456,9 +456,9 @@ для крафта напоминалки нужен текст - - вас понял, упоминание будет <t:{0}:f> - + + вас понял, упоминание будет {0} + шизоид у меня на часах такого нету @@ -537,4 +537,13 @@ САМЫЙ ВАЖНЫЙ чел написавший кода больше всех (99.99%) + + напоминалка для {0} скрафченА + + + напоминалка для {0} + + + ты хотел чтоб я напомнил тебе {0} + diff --git a/Services/Data/GuildDataService.cs b/Services/GuildDataService.cs similarity index 99% rename from Services/Data/GuildDataService.cs rename to Services/GuildDataService.cs index bd8ff7e..be873f1 100644 --- a/Services/Data/GuildDataService.cs +++ b/Services/GuildDataService.cs @@ -5,7 +5,7 @@ using Microsoft.Extensions.Hosting; using Remora.Discord.API.Abstractions.Rest; using Remora.Rest.Core; -namespace Boyfriend.Services.Data; +namespace Boyfriend.Services; /// /// Handles saving, loading, initializing and providing . diff --git a/Services/GuildUpdateService.cs b/Services/GuildUpdateService.cs index 5e3f36a..3d55f07 100644 --- a/Services/GuildUpdateService.cs +++ b/Services/GuildUpdateService.cs @@ -1,5 +1,4 @@ using Boyfriend.Data; -using Boyfriend.Services.Data; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; using Remora.Discord.API.Abstractions.Objects; @@ -95,11 +94,12 @@ public class GuildUpdateService : BackgroundService { /// This method does the following: /// /// Automatically unbans users once their ban period has expired. - /// Automatically grants users the guild's if one is set. + /// Automatically grants members the guild's if one is set. /// Sends reminders about an upcoming scheduled event. /// Automatically starts scheduled events if is enabled. /// Sends scheduled event start notifications. /// Sends scheduled event completion notifications. + /// Sends reminders to members. /// /// This is done here and not in a for the following reasons: /// @@ -118,20 +118,46 @@ public class GuildUpdateService : BackgroundService { var defaultRoleSnowflake = data.Configuration.DefaultRole.ToDiscordSnowflake(); foreach (var memberData in data.MemberData.Values) { - var userIdSnowflake = memberData.Id.ToDiscordSnowflake(); + var userId = memberData.Id.ToDiscordSnowflake(); + if (defaultRoleSnowflake.Value is not 0 && !memberData.Roles.Contains(defaultRoleSnowflake)) _ = _guildApi.AddGuildMemberRoleAsync( - guildId, userIdSnowflake, defaultRoleSnowflake, ct: ct); + guildId, userId, defaultRoleSnowflake, ct: ct); if (DateTimeOffset.UtcNow > memberData.BannedUntil) { var unbanResult = await _guildApi.RemoveGuildBanAsync( - guildId, userIdSnowflake, Messages.PunishmentExpired.EncodeHeader(), ct); + guildId, userId, Messages.PunishmentExpired.EncodeHeader(), ct); if (unbanResult.IsSuccess) memberData.BannedUntil = null; else _logger.LogWarning( "Error in automatic user unban request.\n{ErrorMessage}", unbanResult.Error.Message); } + + var userResult = await _userApi.GetUserAsync(userId, ct); + if (!userResult.IsDefined(out var user)) continue; + + for (var i = memberData.Reminders.Count - 1; i >= 0; i--) { + var reminder = memberData.Reminders[i]; + if (DateTimeOffset.UtcNow < reminder.RemindAt) continue; + + var embed = new EmbedBuilder().WithSmallTitle( + string.Format(Messages.Reminder, user.GetTag()), user) + .WithDescription( + string.Format(Messages.DescriptionReminder, Markdown.InlineCode(reminder.Text))) + .WithColour(ColorsList.Magenta) + .Build(); + + if (!embed.IsDefined(out var built)) continue; + + var messageResult = await _channelApi.CreateMessageAsync( + reminder.Channel, Mention.User(user), embeds: new[] { built }, ct: ct); + if (!messageResult.IsSuccess) + _logger.LogWarning( + "Error in reminder send.\n{ErrorMessage}", messageResult.Error.Message); + + memberData.Reminders.Remove(reminder); + } } var eventsResult = await _eventApi.ListScheduledEventsForGuildAsync(guildId, ct: ct);