Updated Ellie.Marmalade

This commit is contained in:
Toastie (DCS Team) 2024-05-12 23:43:23 +12:00
parent dac6e283e8
commit b1e6e93fe4
Signed by: toastie_t0ast
GPG key ID: 27F3B6855AFD40A4
25 changed files with 39 additions and 70 deletions

View file

@ -1,4 +1,4 @@
namespace Ellie.Marmalade; namespace EllieBot.Marmalade;
/// <summary> /// <summary>
/// Overridden to implement custom checks which commands have to pass in order to be executed. /// Overridden to implement custom checks which commands have to pass in order to be executed.

View file

@ -1,4 +1,4 @@
namespace Ellie.Marmalade; namespace EllieBot.Marmalade;
/// <summary> /// <summary>
/// Used as a marker class for bot_perm and user_perm Attributes /// Used as a marker class for bot_perm and user_perm Attributes

View file

@ -1,4 +1,4 @@
namespace Ellie.Marmalade; namespace EllieBot.Marmalade;
[AttributeUsage(AttributeTargets.Method)] [AttributeUsage(AttributeTargets.Method)]
public sealed class bot_owner_onlyAttribute : MarmaladePermAttribute public sealed class bot_owner_onlyAttribute : MarmaladePermAttribute

View file

@ -1,6 +1,6 @@
using Discord; using Discord;
namespace Ellie.Marmalade; namespace EllieBot.Marmalade;
[AttributeUsage(AttributeTargets.Method, AllowMultiple = true)] [AttributeUsage(AttributeTargets.Method, AllowMultiple = true)]
public sealed class bot_permAttribute : MarmaladePermAttribute public sealed class bot_permAttribute : MarmaladePermAttribute

View file

@ -1,4 +1,4 @@
namespace Ellie.Marmalade; namespace EllieBot.Marmalade;
/// <summary> /// <summary>
/// Marks a method as a snek command /// Marks a method as a snek command

View file

@ -1,4 +1,4 @@
namespace Ellie.Marmalade; namespace EllieBot.Marmalade;
/// <summary> /// <summary>
/// Marks services in command arguments for injection. /// Marks services in command arguments for injection.

View file

@ -1,4 +1,4 @@
namespace Ellie.Marmalade; namespace EllieBot.Marmalade;
/// <summary> /// <summary>
/// Marks the parameter to take /// Marks the parameter to take

View file

@ -1,4 +1,4 @@
namespace Ellie.Marmalade; namespace EllieBot.Marmalade;
/// <summary> /// <summary>
/// Sets the priority of a command in case there are multiple commands with the same name but different parameters. /// Sets the priority of a command in case there are multiple commands with the same name but different parameters.

View file

@ -1,4 +1,4 @@
namespace Ellie.Marmalade; namespace EllieBot.Marmalade;
/// <summary> /// <summary>
/// Marks the class as a service which can be used within the same Medusa /// Marks the class as a service which can be used within the same Medusa

View file

@ -1,6 +1,6 @@
using Discord; using Discord;
namespace Ellie.Marmalade; namespace EllieBot.Marmalade;
[AttributeUsage(AttributeTargets.Method, AllowMultiple = true)] [AttributeUsage(AttributeTargets.Method, AllowMultiple = true)]
public sealed class user_permAttribute : MarmaladePermAttribute public sealed class user_permAttribute : MarmaladePermAttribute

View file

@ -1,6 +1,6 @@
using Discord; using Discord;
namespace Ellie.Marmalade; namespace EllieBot.Marmalade;
/// <summary> /// <summary>
/// The base class which will be loaded as a module into EllieBot /// The base class which will be loaded as a module into EllieBot

View file

@ -1,7 +1,7 @@
using Discord; using Discord;
using EllieBot; using EllieBot;
namespace Ellie.Marmalade; namespace EllieBot.Marmalade;
/// <summary> /// <summary>
/// Commands which take this class as a first parameter can be executed in both DMs and Servers /// Commands which take this class as a first parameter can be executed in both DMs and Servers
@ -40,13 +40,4 @@ public abstract class AnyContext
/// <param name="args">Arguments (if any) to format in</param> /// <param name="args">Arguments (if any) to format in</param>
/// <returns>A formatted localized string</returns> /// <returns>A formatted localized string</returns>
public abstract string GetText(string key, object[]? args = null); public abstract string GetText(string key, object[]? args = null);
/// <summary>
/// Creates a context-aware <see cref="IEmbedBuilder"/> instance
/// (future feature for guild-based embed colors)
/// Any code dealing with embeds should use it for future-proofness
/// instead of manually creating embedbuilder instances
/// </summary>
/// <returns>A context-aware <see cref="IEmbedBuilder"/> instance </returns>
public abstract IEmbedBuilder Embed();
} }

View file

@ -1,6 +1,6 @@
using Discord; using Discord;
namespace Ellie.Marmalade; namespace EllieBot.Marmalade;
/// <summary> /// <summary>
/// Commands which take this type as the first parameter can only be executed in DMs /// Commands which take this type as the first parameter can only be executed in DMs

View file

@ -1,6 +1,6 @@
using Discord; using Discord;
namespace Ellie.Marmalade; namespace EllieBot.Marmalade;
/// <summary> /// <summary>
/// Commands which take this type as a first parameter can only be executed in a server /// Commands which take this type as a first parameter can only be executed in a server

View file

@ -1,24 +1,21 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<TargetFramework>net6.0</TargetFramework> <TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings> <ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable> <Nullable>enable</Nullable>
<LangVersion>preview</LangVersion>
<EnablePreviewFeatures>true</EnablePreviewFeatures>
<RootNamespace>Ellie.Marmalade</RootNamespace>
<Authors>The EllieBot Devs</Authors> <Authors>The EllieBot Devs</Authors>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Discord.Net.Core" Version="3.104.0" /> <PackageReference Include="Discord.Net.Core" Version="3.204.0" />
<PackageReference Include="Serilog" Version="2.11.0" /> <PackageReference Include="Serilog" Version="3.1.1" />
<PackageReference Include="YamlDotNet" Version="11.2.1" /> <PackageReference Include="YamlDotNet" Version="15.1.2" />
</ItemGroup> </ItemGroup>
<PropertyGroup Condition=" '$(Version)' == '' "> <PropertyGroup Condition=" '$(Version)' == '' ">
<Version>5.0.0</Version> <Version>9.0.0</Version>
</PropertyGroup> </PropertyGroup>
</Project> </Project>

View file

@ -1,14 +0,0 @@
namespace EllieBot;
public static class EmbedBuilderExtensions
{
public static IEmbedBuilder WithOkColor(this IEmbedBuilder eb)
=> eb.WithColor(EmbedColor.Ok);
public static IEmbedBuilder WithPendingColor(this IEmbedBuilder eb)
=> eb.WithColor(EmbedColor.Pending);
public static IEmbedBuilder WithErrorColor(this IEmbedBuilder eb)
=> eb.WithColor(EmbedColor.Error);
}

View file

@ -1,11 +1,10 @@
using Discord; using Discord;
using Ellie.Marmalade;
namespace EllieBot; namespace EllieBot.Marmalade;
public static class MarmaladeExtensions public static class MarmaladeExtensions
{ {
public static Task<IUserMessage> EmbedAsync(this IMessageChannel ch, IEmbedBuilder embed, string msg = "") public static Task<IUserMessage> EmbedAsync(this IMessageChannel ch, EmbedBuilder embed, string msg = "")
=> ch.SendMessageAsync(msg, => ch.SendMessageAsync(msg,
embed: embed.Build(), embed: embed.Build(),
options: new() options: new()
@ -13,25 +12,21 @@ public static class MarmaladeExtensions
RetryMode = RetryMode.Retry502 RetryMode = RetryMode.Retry502
}); });
// unlocalized
public static Task<IUserMessage> SendConfirmAsync(this IMessageChannel ch, AnyContext ctx, string msg)
=> ch.EmbedAsync(ctx.Embed().WithOkColor().WithDescription(msg));
public static Task<IUserMessage> SendPendingAsync(this IMessageChannel ch, AnyContext ctx, string msg)
=> ch.EmbedAsync(ctx.Embed().WithPendingColor().WithDescription(msg));
public static Task<IUserMessage> SendErrorAsync(this IMessageChannel ch, AnyContext ctx, string msg)
=> ch.EmbedAsync(ctx.Embed().WithErrorColor().WithDescription(msg));
// unlocalized // unlocalized
public static Task<IUserMessage> SendConfirmAsync(this AnyContext ctx, string msg) public static Task<IUserMessage> SendConfirmAsync(this AnyContext ctx, string msg)
=> ctx.Channel.SendConfirmAsync(ctx, msg); => ctx.Channel.EmbedAsync(new EmbedBuilder()
.WithColor(0, 200, 0)
.WithDescription(msg));
public static Task<IUserMessage> SendPendingAsync(this AnyContext ctx, string msg) public static Task<IUserMessage> SendPendingAsync(this AnyContext ctx, string msg)
=> ctx.Channel.SendPendingAsync(ctx, msg); => ctx.Channel.EmbedAsync(new EmbedBuilder()
.WithColor(200, 200, 0)
.WithDescription(msg));
public static Task<IUserMessage> SendErrorAsync(this AnyContext ctx, string msg) public static Task<IUserMessage> SendErrorAsync(this AnyContext ctx, string msg)
=> ctx.Channel.SendErrorAsync(ctx, msg); => ctx.Channel.EmbedAsync(new EmbedBuilder()
.WithColor(200, 0, 0)
.WithDescription(msg));
// localized // localized
public static Task ConfirmAsync(this AnyContext ctx) public static Task ConfirmAsync(this AnyContext ctx)
@ -63,4 +58,4 @@ public static class MarmaladeExtensions
public static Task<IUserMessage> ReplyConfirmLocalizedAsync(this AnyContext ctx, string key, params object[]? args) public static Task<IUserMessage> ReplyConfirmLocalizedAsync(this AnyContext ctx, string key, params object[]? args)
=> ctx.SendConfirmAsync($"{Format.Bold(ctx.User.ToString())} {ctx.GetText(key, args)}"); => ctx.SendConfirmAsync($"{Format.Bold(ctx.User.ToString())} {ctx.GetText(key, args)}");
} }

View file

@ -1,4 +1,4 @@
namespace Ellie.Marmalade; namespace EllieBot.Marmalade;
/// <summary> /// <summary>
/// Overridden to implement parsers for custom types /// Overridden to implement parsers for custom types

View file

@ -1,4 +1,4 @@
namespace Ellie.Marmalade; namespace EllieBot.Marmalade;
public readonly struct ParseResult<T> public readonly struct ParseResult<T>
{ {

View file

@ -1,6 +1,6 @@
using YamlDotNet.Serialization; using YamlDotNet.Serialization;
namespace Ellie.Marmalade; namespace EllieBot.Marmalade;
public readonly struct CommandStrings public readonly struct CommandStrings
{ {

View file

@ -1,6 +1,6 @@
using System.Globalization; using System.Globalization;
namespace Ellie.Marmalade; namespace EllieBot.Marmalade;
/// <summary> /// <summary>
/// Defines methods to retrieve and reload marmalade strings /// Defines methods to retrieve and reload marmalade strings

View file

@ -1,4 +1,4 @@
namespace Ellie.Marmalade; namespace EllieBot.Marmalade;
/// <summary> /// <summary>
/// Implemented by classes which provide localized strings in their own ways /// Implemented by classes which provide localized strings in their own ways

View file

@ -1,4 +1,4 @@
namespace Ellie.Marmalade; namespace EllieBot.Marmalade;
public class LocalMarmaladeStringsProvider : IMarmaladeStringsProvider public class LocalMarmaladeStringsProvider : IMarmaladeStringsProvider
{ {

View file

@ -1,7 +1,7 @@
using System.Globalization; using System.Globalization;
using Serilog; using Serilog;
namespace Ellie.Marmalade; namespace EllieBot.Marmalade;
public class MarmaladeStrings : IMarmaladeStrings public class MarmaladeStrings : IMarmaladeStrings
{ {

View file

@ -2,7 +2,7 @@
using Serilog; using Serilog;
using YamlDotNet.Serialization; using YamlDotNet.Serialization;
namespace Ellie.Marmalade; namespace EllieBot.Marmalade;
/// <summary> /// <summary>
/// Loads strings from the shortcut or localizable path /// Loads strings from the shortcut or localizable path