Ejemplo n.º 1
0
        private RaidProtectionConfig GetServerConfig(ulong server)
        {
            // checks if server exists in database and adds if not
            var serverConfig = _floofDB.RaidProtectionConfigs.Find(server);

            if (serverConfig == null)
            {
                _floofDB.Add(new RaidProtectionConfig
                {
                    ServerId        = server,
                    Enabled         = false,
                    ModChannelId    = null,
                    ModRoleId       = null,
                    MutedRoleId     = null,
                    BanOffenders    = true,
                    ExceptionRoleId = null
                });
                _floofDB.SaveChanges();
                return(_floofDB.RaidProtectionConfigs.Find(server));
            }
            else
            {
                return(serverConfig);
            }
        }
Ejemplo n.º 2
0
            private void AddServerIfNotExists(ulong serverId)
            {
                // checks if server exists in database and adds if not
                LogConfig serverConfig = _floofDB.LogConfigs.Find(serverId);

                if (serverConfig == null)
                {
                    _floofDB.Add(new LogConfig
                    {
                        ServerId = serverId,
                        MessageUpdatedChannel = 0,
                        MessageDeletedChannel = 0,
                        UserBannedChannel     = 0,
                        UserUnbannedChannel   = 0,
                        UserJoinedChannel     = 0,
                        UserLeftChannel       = 0,
                        MemberUpdatesChannel  = 0,
                        UserKickedChannel     = 0,
                        UserMutedChannel      = 0,
                        UserUnmutedChannel    = 0,
                        IsOn = false
                    });
                    _floofDB.SaveChanges();
                }
            }
Ejemplo n.º 3
0
        public async Task Add(
            [Summary("Tag name")] string tagName = null,
            [Summary("Tag content")][Remainder] string content = null)
        {
            IGuildUser user = (IGuildUser)Context.Message.Author;

            if (!UserHasTagUpdatePermissions(user))
            {
                await Context.Channel.SendMessageAsync("You do not have the permission to add tags.");

                return;
            }

            if (!string.IsNullOrEmpty(tagName) && !string.IsNullOrEmpty(content))
            {
                Regex  rgx = new Regex("[^a-zA-Z0-9-]");
                string processedTagName = rgx.Replace(tagName, "").ToLower();
                if (string.IsNullOrEmpty(processedTagName))
                {
                    await SendEmbed(CreateDescriptionEmbed($"💾 Invalid Tag name. " +
                                                           "Tag must contain characters within [A-Za-z0-9-]."));

                    return;
                }

                bool tagExists = _floofDb.Tags.AsQueryable()
                                 .Any(tag => tag.TagName == processedTagName && tag.ServerId == Context.Guild.Id);
                if (tagExists)
                {
                    await SendEmbed(CreateDescriptionEmbed($"💾 Tag `{processedTagName}` already exists"));

                    return;
                }

                try
                {
                    _floofDb.Add(new Tag
                    {
                        TagName    = processedTagName,
                        ServerId   = Context.Guild.Id,
                        UserId     = Context.User.Id,
                        TagContent = content
                    });
                    _floofDb.SaveChanges();
                    await SendEmbed(CreateDescriptionEmbed($"💾 Added Tag `{processedTagName}`"));
                }
                catch (DbUpdateException e)
                {
                    await SendEmbed(CreateDescriptionEmbed($"💾 Unable to add Tag `{processedTagName}`"));

                    Log.Error(e.ToString());
                }
            }
            else
            {
                await SendEmbed(CreateDescriptionEmbed($"💾 Usage: `tag add [name] [content]`"));
            }
        }
Ejemplo n.º 4
0
        private void CheckServerEntryExists(ulong server)
        {
            // checks if server exists in database and adds if not
            var serverConfig = _floofDB.NicknameAlertConfigs.Find(server);

            if (serverConfig == null)
            {
                _floofDB.Add(new NicknameAlertConfig
                {
                    ServerId = server,
                    Channel  = 0,
                    IsOn     = false
                });
                _floofDB.SaveChanges();
            }
        }
Ejemplo n.º 5
0
        public async Task AddRole([Summary("role name")][Remainder] string roleName = null)
        {
            if (roleName == null)
            {
                await Context.Channel.SendMessageAsync("", false, new EmbedBuilder { Description = $"💾 Usage: `iamconfig add [rolename]`", Color = EMBED_COLOUR }.Build());

                return;
            }

            // find the role by iterating over guild roles
            SocketRole role = GetRole(roleName.ToLower(), Context.Guild);

            if (role == null)
            {
                await Context.Channel.SendMessageAsync("Unable to find a role with that name to add.");

                return;
            }

            bool roleExistsInDb = CheckRoleEntryExists(role, Context.Guild);

            if (roleExistsInDb == true)
            {
                await Context.Channel.SendMessageAsync("Users can already join that role.");

                return;
            }
            else
            {
                try
                {
                    _floofDb.Add(new UserAssignableRole
                    {
                        RoleId   = role.Id,
                        ServerId = Context.Guild.Id
                    });
                    _floofDb.SaveChanges();
                    await Context.Channel.SendMessageAsync($"{role.Name} ({role.Id}) can now be joined by users!");
                }
                catch (Exception ex)
                {
                    await Context.Channel.SendMessageAsync("An error occured when trying to add that role.");

                    Log.Error("Error when trying to add a joinable role: " + ex);
                }
            }
        }
Ejemplo n.º 6
0
    private ErrorLogging GetServerConfig(ulong server)
    {
        // checks if server exists in database and adds if not
        var serverConfig = _floofDB.ErrorLoggingConfigs.Find(server);

        if (serverConfig == null)
        {
            _floofDB.Add(new ErrorLogging
            {
                ServerId  = server,
                ChannelId = null,
                IsOn      = false
            });
            _floofDB.SaveChanges();
            return(_floofDB.ErrorLoggingConfigs.Find(server));
        }
        else
        {
            return(serverConfig);
        }
    }
Ejemplo n.º 7
0
        private WelcomeGate GetServerConfig(ulong server)
        {
            // checks if server exists in database and adds if not
            var serverConfig = _floofDB.WelcomeGateConfigs.Find(server);

            if (serverConfig == null)
            {
                _floofDB.Add(new WelcomeGate
                {
                    GuildID = server,
                    Toggle  = false,
                    RoleId  = null
                });
                _floofDB.SaveChanges();
                return(_floofDB.WelcomeGateConfigs.Find(server));
            }
            else
            {
                return(serverConfig);
            }
        }
Ejemplo n.º 8
0
        private ModMail GetServerConfig(ulong server)
        {
            // checks if server exists in database and adds if not
            var serverConfig = _floofDB.ModMails.Find(server);

            if (serverConfig == null)
            {
                _floofDB.Add(new ModMail
                {
                    ServerId  = server,
                    ChannelId = null,
                    IsEnabled = false,
                    ModRoleId = null
                });
                _floofDB.SaveChanges();
                return(_floofDB.ModMails.Find(server));
            }
            else
            {
                return(serverConfig);
            }
        }
Ejemplo n.º 9
0
        public async Task OnReactionAdded(Cacheable <IUserMessage, ulong> message, ISocketMessageChannel channel, SocketReaction reaction)
        {
            var msg  = message.Value as IUserMessage;
            var chan = channel as ITextChannel;

            if (reaction.User.Value.IsBot || msg == null || chan == null)
            {
                return;
            }

            var serverConfig = _floofDb.NicknameAlertConfigs.Find(chan.Guild.Id);

            if (serverConfig == null || !serverConfig.IsOn || serverConfig.Channel == 0) // not configured/disabled
            {
                return;
            }

            if (alertMessageIdsDic != null && alertMessageIdsDic.ContainsKey(msg.Id))
            {
                SocketGuildUser badUser;
                alertMessageIdsDic.TryGetValue(msg.Id, out badUser);
                var moderator = badUser.Guild.GetUser(reaction.UserId);

                if (reaction.Emote.Name.Equals(BAN_EMOJI.Name))
                {
                    try
                    {
                        //sends message to user
                        EmbedBuilder builder = new EmbedBuilder();
                        builder.Title       = "⚖️ Ban Notification";
                        builder.Description = $"You have been banned from {badUser.Guild.Name}";
                        builder.AddField("Reason", "Banned by BOT for an inappropriate name");
                        builder.Color = Color.DarkOrange;

                        await badUser.SendMessageAsync("", false, builder.Build());

                        await badUser.Guild.AddBanAsync(badUser, 0, $"{moderator.Username}#{moderator.Discriminator} ({moderator.Id}) -> Inappropriate Name");

                        await channel.SendMessageAsync($"Got it! I banned {badUser.Username}#{badUser.Discriminator}!");
                    }
                    catch (Exception ex)
                    {
                        await channel.SendMessageAsync("Unable to ban user. Do I have the permissions?");

                        Log.Error("Unable to ban user for bad name: " + ex);
                    }
                    alertMessageIdsDic.Remove(msg.Id);
                }
                else if (reaction.Emote.Name.Equals(WARN_EMOJI.Name))
                {
                    try
                    {
                        FloofDataContext _floofDb = new FloofDataContext();
                        _floofDb.Add(new Warning
                        {
                            DateAdded   = DateTime.Now,
                            Forgiven    = false,
                            GuildId     = badUser.Guild.Id,
                            Moderator   = $"{moderator.Username}#{moderator.Discriminator}",
                            ModeratorId = moderator.Id,
                            Reason      = $"{moderator.Username}#{moderator.Discriminator} -> Warned by BOT for an inappropriate name",
                            UserId      = badUser.Id
                        });
                        _floofDb.SaveChanges();

                        EmbedBuilder builder = new EmbedBuilder();
                        builder.Title       = "⚖️ Warn Notification";
                        builder.Description = $"You have recieved a warning in {badUser.Guild.Name}";
                        builder.AddField("Reason", "Warned by BOT for an inappropriate name");
                        builder.Color = Color.DarkOrange;
                        await badUser.SendMessageAsync("", false, builder.Build());

                        await channel.SendMessageAsync($"Got it! I warned {badUser.Username}#{badUser.Discriminator}!");
                    }
                    catch (Exception ex)
                    {
                        await channel.SendMessageAsync("Unable to warn user. Do I have the permissions?");

                        Log.Error("Unable to warn user for bad name: " + ex);
                    }
                    alertMessageIdsDic.Remove(msg.Id);
                    return;
                }
                else if (reaction.Emote.Name.Equals(KICK_EMOJI.Name))
                {
                    try
                    {
                        //sends message to user
                        EmbedBuilder builder = new EmbedBuilder();
                        builder.Title       = "🥾 Kick Notification";
                        builder.Description = $"You have been Kicked from {badUser.Guild.Name}";
                        builder.AddField("Reason", "Kicked by BOT for an inappropriate name");
                        builder.Color = Color.DarkOrange;
                        await badUser.SendMessageAsync("", false, builder.Build());

                        await badUser.KickAsync($"{badUser.Username}#{badUser.Discriminator} -> Inappropriate Name");

                        await channel.SendMessageAsync($"Got it! I kicked {badUser.Username}#{badUser.Discriminator}!");
                    }
                    catch (Exception ex)
                    {
                        await channel.SendMessageAsync("Unable to kick user. Do I have the permissions?");

                        Log.Error("Unable to kick user for bad name: " + ex);
                    }
                    alertMessageIdsDic.Remove(msg.Id);
                }
                else if (reaction.Emote.Name.Equals(REMOVE_NICKNAME_EMOJI.Name))
                {
                    try
                    {
                        await badUser.Guild.GetUser(badUser.Id).ModifyAsync(user => user.Nickname = "");

                        await channel.SendMessageAsync($"Got it! I removed {badUser.Username}#{badUser.Discriminator}'s nickname!");
                    }
                    catch (Exception ex)
                    {
                        await channel.SendMessageAsync("Unable to remove their nickname. Do I have the permissions?");

                        Log.Error("Unable to remove nickname for bad name: " + ex);
                    }
                    alertMessageIdsDic.Remove(msg.Id);
                }
                else if (reaction.Emote.Name.Equals(NO_ACTION_EMOJI.Name))
                {
                    await channel.SendMessageAsync($"Got it! I took no action against {badUser.Username}#{badUser.Discriminator}!");

                    alertMessageIdsDic.Remove(msg.Id);
                }
                return;
            }
        }