Beispiel #1
0
        internal BotShard CreateShard(int shardId, int totalShards)
        {
            BotShard shard = new BotShard(this, Configuration.Token, shardId, totalShards);

            shard.ExceptionCaught += OnExceptionCaught;
            return(shard);
        }
Beispiel #2
0
        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));
            }
Beispiel #4
0
        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"));
        }