-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathPluginManifest.cs
62 lines (48 loc) · 1.85 KB
/
PluginManifest.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using YumeChan.PluginBase;
using YumeChan.RoleDeck.Services;
namespace YumeChan.RoleDeck;
// ReSharper disable once ClassNeverInstantiated.Global
public class PluginManifest : Plugin
{
public override string DisplayName => "Yume-Chan RoleDeck";
public override bool StealthMode => false;
private readonly ILogger<PluginManifest> _logger;
private readonly UserReactionsListener _reactionsListener;
private readonly IncomingUsersListener _incomingUsersListener;
public PluginManifest(ILogger<PluginManifest> logger, UserReactionsListener reactionsListener, IncomingUsersListener incomingUsersListener)
{
_logger = logger;
_reactionsListener = reactionsListener;
_incomingUsersListener = incomingUsersListener;
}
public override async Task LoadAsync()
{
CancellationToken ct = CancellationToken.None; // May get added into method parameters later on.
await base.LoadAsync();
await _reactionsListener.StartAsync(ct);
await _incomingUsersListener.StartAsync(ct);
_logger.LogInformation("Loaded {Plugin}.", DisplayName);
}
public override async Task UnloadAsync()
{
CancellationToken ct = CancellationToken.None; // May get added into method parameters later on.
_logger.LogInformation("Unloading {Plugin}...", DisplayName);
await _reactionsListener.StopAsync(ct);
await _incomingUsersListener.StopAsync(ct);
await base.UnloadAsync();
}
}
public sealed class DependencyRegistrations : DependencyInjectionHandler
{
public override IServiceCollection ConfigureServices(IServiceCollection services) => services
.AddSingleton<IncomingUsersListener>()
.AddSingleton<UserReactionsListener>()
.AddSingleton<InitialRolesService>()
.AddSingleton<RoleMessageService>()
.AddSingleton<MassRoleService>()
;
}