mirror of
				https://gitlab.com/Kwoth/nadekobot.git
				synced 2025-11-03 16:24:27 -05:00 
			
		
		
		
	Added new rules concerning type constraints and :base() calls. Reformatted attributes folder
This commit is contained in:
		@@ -330,3 +330,8 @@ resharper_csharp_wrap_parameters_style = chop_if_long
 | 
				
			|||||||
resharper_force_chop_compound_if_expression = true
 | 
					resharper_force_chop_compound_if_expression = true
 | 
				
			||||||
resharper_keep_existing_linebreaks = false
 | 
					resharper_keep_existing_linebreaks = false
 | 
				
			||||||
resharper_max_formal_parameters_on_line = 3
 | 
					resharper_max_formal_parameters_on_line = 3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					resharper_csharp_wrap_before_first_type_parameter_constraint=true
 | 
				
			||||||
 | 
					resharper_csharp_place_type_constraints_on_same_line=false
 | 
				
			||||||
 | 
					resharper_csharp_wrap_before_extends_colon=true
 | 
				
			||||||
 | 
					resharper_csharp_place_constructor_initializer_on_same_line=false
 | 
				
			||||||
@@ -2,11 +2,11 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
public static class CommandNameLoadHelper
 | 
					public static class CommandNameLoadHelper
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
        
 | 
					    private static readonly YamlDotNet.Serialization.IDeserializer _deserializer =
 | 
				
			||||||
    private static readonly YamlDotNet.Serialization.IDeserializer _deserializer
 | 
					        new YamlDotNet.Serialization.Deserializer();
 | 
				
			||||||
        = new YamlDotNet.Serialization.Deserializer();
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public static Lazy<Dictionary<string, string[]>> LazyCommandAliases = new(() => LoadCommandNames());
 | 
					    public static Lazy<Dictionary<string, string[]>> LazyCommandAliases = new(() => LoadCommandNames());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public static Dictionary<string, string[]> LoadCommandNames(string aliasesFilePath = "data/aliases.yml")
 | 
					    public static Dictionary<string, string[]> LoadCommandNames(string aliasesFilePath = "data/aliases.yml")
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        var text = File.ReadAllText(aliasesFilePath);
 | 
					        var text = File.ReadAllText(aliasesFilePath);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,7 +5,7 @@ namespace NadekoBot.Common.Attributes;
 | 
				
			|||||||
[AttributeUsage(AttributeTargets.Method)]
 | 
					[AttributeUsage(AttributeTargets.Method)]
 | 
				
			||||||
public sealed class NadekoCommandAttribute : CommandAttribute
 | 
					public sealed class NadekoCommandAttribute : CommandAttribute
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public NadekoCommandAttribute([CallerMemberName] string memberName="") 
 | 
					    public NadekoCommandAttribute([CallerMemberName] string memberName = "")
 | 
				
			||||||
        : base(CommandNameLoadHelper.GetCommandNameFor(memberName))
 | 
					        : base(CommandNameLoadHelper.GetCommandNameFor(memberName))
 | 
				
			||||||
        => this.MethodName = memberName.ToLowerInvariant();
 | 
					        => this.MethodName = memberName.ToLowerInvariant();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3,7 +3,8 @@
 | 
				
			|||||||
[AttributeUsage(AttributeTargets.Class)]
 | 
					[AttributeUsage(AttributeTargets.Class)]
 | 
				
			||||||
internal sealed class NadekoModuleAttribute : GroupAttribute
 | 
					internal sealed class NadekoModuleAttribute : GroupAttribute
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public NadekoModuleAttribute(string moduleName) : base(moduleName)
 | 
					    public NadekoModuleAttribute(string moduleName)
 | 
				
			||||||
 | 
					        : base(moduleName)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -5,10 +5,16 @@ namespace NadekoBot.Common.Attributes;
 | 
				
			|||||||
[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class)]
 | 
					[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class)]
 | 
				
			||||||
public sealed class OwnerOnlyAttribute : PreconditionAttribute
 | 
					public sealed class OwnerOnlyAttribute : PreconditionAttribute
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public override Task<PreconditionResult> CheckPermissionsAsync(ICommandContext context, CommandInfo executingCommand, IServiceProvider services)
 | 
					    public override Task<PreconditionResult> CheckPermissionsAsync(
 | 
				
			||||||
 | 
					        ICommandContext context,
 | 
				
			||||||
 | 
					        CommandInfo executingCommand,
 | 
				
			||||||
 | 
					        IServiceProvider services)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        var creds = services.GetRequiredService<IBotCredsProvider>().GetCreds();
 | 
					        var creds = services.GetRequiredService<IBotCredsProvider>().GetCreds();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return Task.FromResult(creds.IsOwner(context.User) || context.Client.CurrentUser.Id == context.User.Id ? PreconditionResult.FromSuccess() : PreconditionResult.FromError("Not owner"));
 | 
					        return Task.FromResult(creds.IsOwner(context.User) || context.Client.CurrentUser.Id == context.User.Id
 | 
				
			||||||
 | 
					            ? PreconditionResult.FromSuccess()
 | 
				
			||||||
 | 
					            : PreconditionResult.FromError("Not owner")
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -15,7 +15,10 @@ public sealed class RatelimitAttribute : PreconditionAttribute
 | 
				
			|||||||
        Seconds = seconds;
 | 
					        Seconds = seconds;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public override Task<PreconditionResult> CheckPermissionsAsync(ICommandContext context, CommandInfo command, IServiceProvider services)
 | 
					    public override Task<PreconditionResult> CheckPermissionsAsync(
 | 
				
			||||||
 | 
					        ICommandContext context,
 | 
				
			||||||
 | 
					        CommandInfo command,
 | 
				
			||||||
 | 
					        IServiceProvider services)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        if (Seconds == 0)
 | 
					        if (Seconds == 0)
 | 
				
			||||||
            return Task.FromResult(PreconditionResult.FromSuccess());
 | 
					            return Task.FromResult(PreconditionResult.FromSuccess());
 | 
				
			||||||
@@ -23,7 +26,7 @@ public sealed class RatelimitAttribute : PreconditionAttribute
 | 
				
			|||||||
        var cache = services.GetRequiredService<IDataCache>();
 | 
					        var cache = services.GetRequiredService<IDataCache>();
 | 
				
			||||||
        var rem = cache.TryAddRatelimit(context.User.Id, command.Name, Seconds);
 | 
					        var rem = cache.TryAddRatelimit(context.User.Id, command.Name, Seconds);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if(rem is null)
 | 
					        if (rem is null)
 | 
				
			||||||
            return Task.FromResult(PreconditionResult.FromSuccess());
 | 
					            return Task.FromResult(PreconditionResult.FromSuccess());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        var msgContent = $"You can use this command again in {rem.Value.TotalSeconds:F1}s.";
 | 
					        var msgContent = $"You can use this command again in {rem.Value.TotalSeconds:F1}s.";
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -6,20 +6,25 @@ namespace Discord;
 | 
				
			|||||||
[AttributeUsage(AttributeTargets.Method, AllowMultiple = false)]
 | 
					[AttributeUsage(AttributeTargets.Method, AllowMultiple = false)]
 | 
				
			||||||
public class UserPermAttribute : RequireUserPermissionAttribute
 | 
					public class UserPermAttribute : RequireUserPermissionAttribute
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public override Task<PreconditionResult> CheckPermissionsAsync(ICommandContext context, CommandInfo command, IServiceProvider services)
 | 
					    public override Task<PreconditionResult> CheckPermissionsAsync(
 | 
				
			||||||
 | 
					        ICommandContext context,
 | 
				
			||||||
 | 
					        CommandInfo command,
 | 
				
			||||||
 | 
					        IServiceProvider services)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        var permService = services.GetRequiredService<DiscordPermOverrideService>();
 | 
					        var permService = services.GetRequiredService<DiscordPermOverrideService>();
 | 
				
			||||||
        if (permService.TryGetOverrides(context.Guild?.Id ?? 0, command.Name.ToUpperInvariant(), out var _))
 | 
					        if (permService.TryGetOverrides(context.Guild?.Id ?? 0, command.Name.ToUpperInvariant(), out _))
 | 
				
			||||||
            return Task.FromResult(PreconditionResult.FromSuccess());
 | 
					            return Task.FromResult(PreconditionResult.FromSuccess());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return base.CheckPermissionsAsync(context, command, services);
 | 
					        return base.CheckPermissionsAsync(context, command, services);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public UserPermAttribute(GuildPerm permission) : base(permission)
 | 
					    public UserPermAttribute(GuildPerm permission)
 | 
				
			||||||
 | 
					        : base(permission)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public UserPermAttribute(ChannelPerm permission) : base(permission)
 | 
					    public UserPermAttribute(ChannelPerm permission)
 | 
				
			||||||
 | 
					        : base(permission)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -4,9 +4,6 @@
 | 
				
			|||||||
// and they get looped through constantly
 | 
					// and they get looped through constantly
 | 
				
			||||||
public static class ArrayExtensions
 | 
					public static class ArrayExtensions
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    private static int x = 0;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    /// <summary>
 | 
					    /// <summary>
 | 
				
			||||||
    /// Create a new array from the old array + new element at the end
 | 
					    /// Create a new array from the old array + new element at the end
 | 
				
			||||||
    /// </summary>
 | 
					    /// </summary>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -68,7 +68,8 @@ public static class EnumerableExtensions
 | 
				
			|||||||
        this IEnumerable<KeyValuePair<TKey, TValue>> dict)
 | 
					        this IEnumerable<KeyValuePair<TKey, TValue>> dict)
 | 
				
			||||||
        => new(dict);
 | 
					        => new(dict);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public static IndexedCollection<T> ToIndexed<T>(this IEnumerable<T> enumerable) where T : class, IIndexed
 | 
					    public static IndexedCollection<T> ToIndexed<T>(this IEnumerable<T> enumerable)
 | 
				
			||||||
 | 
					        where T : class, IIndexed
 | 
				
			||||||
        => new(enumerable);
 | 
					        => new(enumerable);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // todo use this extension instead of Task.WhenAll
 | 
					    // todo use this extension instead of Task.WhenAll
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user