internal BotShard CreateShard(int shardId, int totalShards) { BotShard shard = new BotShard(this, Configuration.Token, shardId, totalShards); shard.ExceptionCaught += OnExceptionCaught; return(shard); }
public GuildHandler(BotShard shard, ulong guildId) { Shard = shard; GuildId = guildId; Plugins = new PluginManager(this); Messenger = new PluginMessenger(); Config = new PluginConfig(); Clock = new Clock(1, Name); Clock.Start(); Name = GetGuild().Name; Culture = new CachedValue <CultureInfo>(new IdentityKeyJsonRepository("pluginconfig"), GuildId, "Culture", () => new CultureInfo("en-US")); }
public Task <Result> Execute(CommandMetadata _, int shardId) { BotShard shard = ParentPlugin.GuildHandler.Shard.BotClient.GetShards().FirstOrDefault(x => x.ShardId == shardId); GuildHandler[] handlers = shard?.GetGuildHandlers(); if (shard == null) { return(TaskResult(null, $"Failed to fetch status for shard {shardId}, it may be running on a different physical process. ShardsIds on this process range from {ParentPlugin.GuildHandler.Client.Configuration.ShardRange.Min} to {ParentPlugin.GuildHandler.Client.Configuration.ShardRange.Max - 1}")); } int fieldIndex = 1; EmbedBuilder builder = new EmbedBuilder() .WithTitle($"Shard {shardId} status") .WithDescription($"```{shard}```"); return(TaskResult(new LargeEmbed(builder, string.Join("\n", handlers.Select(x => x.ToString())).SplitMessage("```", 1000).Select(x => new EmbedFieldBuilder().WithName($"Field {fieldIndex++}").WithValue(x))), string.Empty)); }
public GuildHandler(BotShard shard, ulong guildId) { Shard = shard; GuildId = guildId; Plugins = new PluginManager(this); Messenger = new PluginMessenger(); Config = new PluginConfig(); State = new StateManager(); Notifier = new GuildNotifier(this); Clock = new Clock(1, Name); Clock.Start(); Name = GetGuild().Name; BootDate = DateTime.Now; Plugins.OnPrePluginsLoaded += Plugins_OnPrePluginsLoaded; Plugins.OnPluginUnloaded += Plugins_OnPluginUnloaded; JoinedGuild += GuildHandler_JoinedGuild; Culture = new CachedValue <CultureInfo>(new DoubleKeyJsonRepository("pluginconfig"), GuildId, "Culture", () => new CultureInfo("en-US")); }