mirror of
https://gitlab.com/Kwoth/nadekobot.git
synced 2025-09-10 17:28:27 -04:00
Merge branch 'v5' of https://gitlab.com/Kwoth/nadekobot into v5
This commit is contained in:
@@ -7,9 +7,6 @@ using NadekoBot.Db;
|
||||
using NadekoBot.Modules.Utility;
|
||||
using NadekoBot.Services.Database.Models;
|
||||
using Ninject;
|
||||
using Ninject.Extensions.Conventions;
|
||||
using Ninject.Extensions.Conventions.Syntax;
|
||||
using Ninject.Infrastructure.Language;
|
||||
using Ninject.Planning;
|
||||
using System.Collections.Immutable;
|
||||
using System.Diagnostics;
|
||||
@@ -140,24 +137,7 @@ public sealed class Bot
|
||||
kernel.Bind<ICoordinator, IReadyExecutor>().To<RemoteGrpcCoordinator>().InSingletonScope();
|
||||
}
|
||||
|
||||
kernel.Bind(scan =>
|
||||
{
|
||||
scan.FromThisAssembly()
|
||||
.SelectAllClasses()
|
||||
.Where(c => (c.IsAssignableTo(typeof(INService))
|
||||
|| c.IsAssignableTo(typeof(IExecOnMessage))
|
||||
|| c.IsAssignableTo(typeof(IInputTransformer))
|
||||
|| c.IsAssignableTo(typeof(IExecPreCommand))
|
||||
|| c.IsAssignableTo(typeof(IExecPostCommand))
|
||||
|| c.IsAssignableTo(typeof(IExecNoCommand)))
|
||||
&& !c.HasAttribute<DontAddToIocContainerAttribute>()
|
||||
#if GLOBAL_NADEK
|
||||
&& !c.HasAttribute<NoPublicBotAttribute>()
|
||||
#endif
|
||||
)
|
||||
.BindToSelfWithInterfaces()
|
||||
.Configure(c => c.InSingletonScope());
|
||||
});
|
||||
kernel.AddLifetimeServices();
|
||||
|
||||
kernel.Bind<IServiceProvider>().ToConstant(kernel).InSingletonScope();
|
||||
|
||||
@@ -339,6 +319,7 @@ public sealed class Bot
|
||||
{
|
||||
try
|
||||
{
|
||||
Console.WriteLine(toExec.GetType().FullName);
|
||||
await toExec.OnReadyAsync();
|
||||
}
|
||||
catch (Exception ex)
|
||||
|
@@ -17,7 +17,8 @@ public sealed record MedusaStats(string Name,
|
||||
string? Description,
|
||||
IReadOnlyCollection<SnekStats> Sneks);
|
||||
|
||||
public sealed record SnekStats(string Name,
|
||||
public sealed record SnekStats(string Name,
|
||||
string? Prefix,
|
||||
IReadOnlyCollection<SnekCommandStats> Commands);
|
||||
|
||||
public sealed record SnekCommandStats(string Name);
|
@@ -79,7 +79,7 @@ public sealed class MedusaLoaderService : IMedusaLoaderService, IReadyExecutor,
|
||||
commands.Add(new SnekCommandStats(command.Aliases.First()));
|
||||
}
|
||||
|
||||
sneks.Add(new SnekStats(snekInfos.Name, commands));
|
||||
sneks.Add(new SnekStats(snekInfos.Name, snekInfos.Instance.Prefix, commands));
|
||||
}
|
||||
|
||||
toReturn.Add(new MedusaStats(name, resolvedData.Strings.GetDescription(culture), sneks));
|
||||
|
@@ -150,9 +150,10 @@ public partial class Medusa : NadekoModule<IMedusaLoaderService>
|
||||
|
||||
var cmdCount = found.Sneks.Sum(x => x.Commands.Count);
|
||||
var cmdNames = found.Sneks
|
||||
.SelectMany(x => x.Commands)
|
||||
.Select(x => Format.Code(x.Name))
|
||||
.Join(" | ");
|
||||
.SelectMany(x => Format.Code(string.IsNullOrWhiteSpace(x.Prefix)
|
||||
? x.Name
|
||||
: $"{x.Prefix} {x.Name}"))
|
||||
.Join("\n");
|
||||
|
||||
var eb = _eb.Create(ctx)
|
||||
.WithOkColor()
|
||||
|
@@ -60,6 +60,7 @@ public class CommandHandler : INService, IReadyExecutor
|
||||
|
||||
public async Task OnReadyAsync()
|
||||
{
|
||||
Log.Information("Command handler runnning on ready");
|
||||
// clear users on short cooldown every GLOBAL_COMMANDS_COOLDOWN miliseconds
|
||||
using var timer = new PeriodicTimer(TimeSpan.FromMilliseconds(GLOBAL_COMMANDS_COOLDOWN));
|
||||
while (await timer.WaitForNextTickAsync())
|
||||
|
@@ -9,6 +9,8 @@ using Ninject.Extensions.Conventions.Syntax;
|
||||
using StackExchange.Redis;
|
||||
using System.Net;
|
||||
using System.Reflection;
|
||||
using NadekoBot.Common.ModuleBehaviors;
|
||||
using Ninject.Infrastructure.Language;
|
||||
|
||||
namespace NadekoBot.Extensions;
|
||||
|
||||
@@ -125,4 +127,25 @@ public static class ServiceCollectionExtensions
|
||||
|
||||
public static IConfigureSyntax BindToSelfWithInterfaces(this IJoinExcludeIncludeBindSyntax matcher)
|
||||
=> matcher.BindSelection((type, types) => types.Append(type));
|
||||
|
||||
public static IKernel AddLifetimeServices(this IKernel kernel)
|
||||
{
|
||||
Assembly.GetExecutingAssembly()
|
||||
.ExportedTypes
|
||||
.Where(x => x.IsPublic && x.IsClass && !x.IsAbstract)
|
||||
.Where(c => (c.IsAssignableTo(typeof(INService))
|
||||
|| c.IsAssignableTo(typeof(IExecOnMessage))
|
||||
|| c.IsAssignableTo(typeof(IInputTransformer))
|
||||
|| c.IsAssignableTo(typeof(IExecPreCommand))
|
||||
|| c.IsAssignableTo(typeof(IExecPostCommand))
|
||||
|| c.IsAssignableTo(typeof(IExecNoCommand)))
|
||||
&& !c.HasAttribute<DontAddToIocContainerAttribute>()
|
||||
#if GLOBAL_NADEKO
|
||||
&& !c.HasAttribute<NoPublicBotAttribute>()
|
||||
#endif
|
||||
);
|
||||
|
||||
|
||||
return kernel;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user