Example #1
0
        public async Task DialogConfig(CommandContext ctx)
        {
            //We need to set quite a few things in this menu, so it is broken down to smaller bits.
            //Many menus are the same, except few words and where values go

            var config = DateBot.Instance.GetGuild(ctx.Guild.Id) as GuildConfig;

            if (config == null)
            {
                //Add and set default stuff
                var gt = new GuildTask()
                {
                    GuildId            = ctx.Guild.Id,
                    WelcomeMessageBody = $"Change this message to fit your audience",
                    MaleEmojiId        = EmojiProvider.MaleSign,
                    FemaleEmojiId      = EmojiProvider.FemaleSign,
                    OptionEmojiIds     = { EmojiProvider.One, EmojiProvider.Two, EmojiProvider.Three },
                    PrivateMessageBody = $"Change this message to fit your audience",
                    LikeEmojiId        = EmojiProvider.Heart,
                    CancelLikeEmojiId  = EmojiProvider.HeartBlack,
                    DisLikeEmojiId     = EmojiProvider.HeartBroken,
                    TimeEmojiId        = EmojiProvider.Timer
                };

                DateBot.Instance.AddGuild(gt);
            }

            await ctx.Message.DeleteAsync().ConfigureAwait(false);

            await MainMenu(ctx).ConfigureAwait(false);
        }
Example #2
0
        public async Task ReadConfig(CommandContext ctx, string json)
        {
            json = json.Replace("```", string.Empty);
            var isNew = !DateBot.Instance.GuildRegistered(ctx.Guild.Id);

            GuildTask config_ =
                JsonConvert.DeserializeObject <GuildTask>(json);

            if (config_.LogChannelId == 0)
            {
                config_.LogChannelId = ctx.Channel.Id;
            }

            if (isNew)
            {
                DateBot.Instance.AddGuild(config_);

                config_.Initialize(ctx.Guild).Wait();
                await DateBot.Instance.SaveStates().ConfigureAwait(false);
            }
            else
            {
                var config = DateBot.Instance.GetGuild(ctx.Guild.Id) as GuildConfig;

                bool regenerateWelcomeMessage = false;
                bool reinit = false;
                var  gt     = ((GuildTask)config);
                //TODO decide what level of initialization is necessary
                if (config_.DateTextChannelId != default)
                {
                    reinit = config.DateTextChannelId != config_.DateTextChannelId;
                    config.DateTextChannelId = config_.DateTextChannelId;
                }
                if (config_.DateCategoryId != default)
                {
                    reinit = config.DateCategoryId != config_.DateCategoryId;
                    config.DateCategoryId = config_.DateCategoryId;
                }
                if (config_.DateSecretCategoryId != default)
                {
                    reinit = config.DateSecretCategoryId != config_.DateSecretCategoryId;
                    config.DateSecretCategoryId = config_.DateSecretCategoryId;
                }
                if (config_.MaleEmojiId != default)
                {
                    regenerateWelcomeMessage = config.MaleEmojiId != config_.MaleEmojiId;
                    config.MaleEmojiId       = config_.MaleEmojiId;
                }
                if (config_.FemaleEmojiId != default)
                {
                    regenerateWelcomeMessage = config.FemaleEmojiId != config_.FemaleEmojiId;
                    config.FemaleEmojiId     = config_.FemaleEmojiId;
                }
                if (config_.OptionEmojiIds.Count != default)
                {
                    regenerateWelcomeMessage = config.OptionEmojiIds != config_.OptionEmojiIds;
                    config.OptionEmojiIds    = config_.OptionEmojiIds;
                }
                if (config_.LikeEmojiId != default)
                {
                    regenerateWelcomeMessage = config.LikeEmojiId != config_.LikeEmojiId;
                    config.LikeEmojiId       = config_.LikeEmojiId;
                }
                if (config_.DisLikeEmojiId != default)
                {
                    regenerateWelcomeMessage = config.DisLikeEmojiId != config_.DisLikeEmojiId;
                    config.DisLikeEmojiId    = config_.DisLikeEmojiId;
                }
                if (config_.TimeEmojiId != default)
                {
                    regenerateWelcomeMessage = config.TimeEmojiId != config_.TimeEmojiId;
                    config.TimeEmojiId       = config_.TimeEmojiId;
                }
                if (config_.SecretRoomTime != default)
                {
                    gt.ChangeTimeout(config_.SecretRoomTime);
                }
                if (config_.WelcomeMessageBody != default && config.WelcomeMessageBody != config_.WelcomeMessageBody)
                {
                    config.WelcomeMessageBody = config_.WelcomeMessageBody;
                    await gt.WelcomeMessage.ModifyAsync(config.WelcomeMessageBody);
                }
                if (config_.WelcomeMessageId != default)
                {
                    config.WelcomeMessageId = config_.WelcomeMessageId;
                }
                if (config_.PrivateMessageBody != default && config.PrivateMessageBody != config_.PrivateMessageBody)
                {
                    config.PrivateMessageBody = config_.PrivateMessageBody;
                    await gt.PrivateControlsMessage.ModifyAsync(config.PrivateMessageBody);
                }
                if (config_.LogChannelId != default)
                {
                    config.LogChannelId = config_.LogChannelId;
                }

                if (reinit)
                {
                    await gt.Initialize(ctx.Guild).ConfigureAwait(false);
                }
                else if (regenerateWelcomeMessage)
                {
                    await gt.WelcomeMessageInit();

                    await gt.PrivateControlsMessageInit();
                }
            }
        }
Example #3
0
 internal void AddGuild(GuildTask config)
 {
     State.Guilds.Add(config);
 }