Properly initialize a sharded client
This commit is contained in:
parent
d9b27a64f3
commit
1f3b0c6de6
@ -55,7 +55,7 @@ namespace PluralKit.Bot
|
|||||||
|
|
||||||
.AddTransient(svc => new DbConnectionFactory(svc.GetRequiredService<CoreConfig>().Database))
|
.AddTransient(svc => new DbConnectionFactory(svc.GetRequiredService<CoreConfig>().Database))
|
||||||
|
|
||||||
.AddSingleton<IDiscordClient, DiscordSocketClient>()
|
.AddSingleton<IDiscordClient, DiscordShardedClient>()
|
||||||
.AddSingleton<Bot>()
|
.AddSingleton<Bot>()
|
||||||
|
|
||||||
.AddTransient<CommandService>(_ => new CommandService(new CommandServiceConfig
|
.AddTransient<CommandService>(_ => new CommandService(new CommandServiceConfig
|
||||||
@ -87,7 +87,7 @@ namespace PluralKit.Bot
|
|||||||
class Bot
|
class Bot
|
||||||
{
|
{
|
||||||
private IServiceProvider _services;
|
private IServiceProvider _services;
|
||||||
private DiscordSocketClient _client;
|
private DiscordShardedClient _client;
|
||||||
private CommandService _commands;
|
private CommandService _commands;
|
||||||
private ProxyService _proxy;
|
private ProxyService _proxy;
|
||||||
private Timer _updateTimer;
|
private Timer _updateTimer;
|
||||||
@ -95,7 +95,7 @@ namespace PluralKit.Bot
|
|||||||
public Bot(IServiceProvider services, IDiscordClient client, CommandService commands, ProxyService proxy)
|
public Bot(IServiceProvider services, IDiscordClient client, CommandService commands, ProxyService proxy)
|
||||||
{
|
{
|
||||||
this._services = services;
|
this._services = services;
|
||||||
this._client = client as DiscordSocketClient;
|
this._client = client as DiscordShardedClient;
|
||||||
this._commands = commands;
|
this._commands = commands;
|
||||||
this._proxy = proxy;
|
this._proxy = proxy;
|
||||||
}
|
}
|
||||||
@ -107,7 +107,7 @@ namespace PluralKit.Bot
|
|||||||
_commands.CommandExecuted += CommandExecuted;
|
_commands.CommandExecuted += CommandExecuted;
|
||||||
await _commands.AddModulesAsync(Assembly.GetEntryAssembly(), _services);
|
await _commands.AddModulesAsync(Assembly.GetEntryAssembly(), _services);
|
||||||
|
|
||||||
_client.Ready += Ready;
|
_client.ShardReady += ShardReady;
|
||||||
|
|
||||||
// Deliberately wrapping in an async function *without* awaiting, we don't want to "block" since this'd hold up the main loop
|
// Deliberately wrapping in an async function *without* awaiting, we don't want to "block" since this'd hold up the main loop
|
||||||
// These handlers return Task so we gotta be careful not to return the Task itself (which would then be awaited) - kinda weird design but eh
|
// These handlers return Task so we gotta be careful not to return the Task itself (which would then be awaited) - kinda weird design but eh
|
||||||
@ -122,12 +122,12 @@ namespace PluralKit.Bot
|
|||||||
await _client.SetGameAsync($"pk;help | in {_client.Guilds.Count} servers");
|
await _client.SetGameAsync($"pk;help | in {_client.Guilds.Count} servers");
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task Ready()
|
private async Task ShardReady(DiscordSocketClient shardClient)
|
||||||
{
|
{
|
||||||
_updateTimer = new Timer((_) => UpdatePeriodic(), null, 0, 60*1000);
|
//_updateTimer = new Timer((_) => UpdatePeriodic(), null, 0, 60*1000);
|
||||||
|
|
||||||
Console.WriteLine($"Shard #{_client.ShardId} connected to {_client.Guilds.Sum(g => g.Channels.Count)} channels in {_client.Guilds.Count} guilds.");
|
Console.WriteLine($"Shard #{shardClient.ShardId} connected to {shardClient.Guilds.Sum(g => g.Channels.Count)} channels in {shardClient.Guilds.Count} guilds.");
|
||||||
Console.WriteLine($"PluralKit started as {_client.CurrentUser.Username}#{_client.CurrentUser.Discriminator} ({_client.CurrentUser.Id}).");
|
//Console.WriteLine($"PluralKit started as {_client.CurrentUser.Username}#{_client.CurrentUser.Discriminator} ({_client.CurrentUser.Id}).");
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task CommandExecuted(Optional<CommandInfo> cmd, ICommandContext ctx, IResult _result)
|
private async Task CommandExecuted(Optional<CommandInfo> cmd, ICommandContext ctx, IResult _result)
|
||||||
|
Loading…
Reference in New Issue
Block a user