示例#1
0
        public IHttpActionResult PostStaffLogs(StaffLogs staffLogs)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            db.StaffLogs.Add(staffLogs);

            try
            {
                db.SaveChanges();
            }
            catch (DbUpdateException)
            {
                if (StaffLogsExists(staffLogs.Id))
                {
                    return(Conflict());
                }
                else
                {
                    throw;
                }
            }

            return(CreatedAtRoute("DefaultApi", new { id = staffLogs.Id }, staffLogs));
        }
示例#2
0
        public IHttpActionResult PutStaffLogs(Guid id, StaffLogs staffLogs)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != staffLogs.Id)
            {
                return(BadRequest());
            }

            db.Entry(staffLogs).State = EntityState.Modified;

            try
            {
                db.SaveChanges();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!StaffLogsExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(StatusCode(HttpStatusCode.NoContent));
        }
示例#3
0
        private string TestStaffLogs(string details, GuildUser user)
        {
            Punishment createPunishment(PunishmentType punishment) => new Punishment(punishment, "Test", Context.User, DateTime.Now, DateTime.Now);

            details += "`Staff Logs`\n";
            details += Test("Log ban, successful", StaffLogs.LogBan(Context.User, Context.Guild, createPunishment(PunishmentType.Ban)));
            details += Test("Log unban, successful", StaffLogs.LogUnban(Context.User, Context.Guild));
            details += Test("Log mute, successful", StaffLogs.LogMute(user, createPunishment(PunishmentType.Mute)));
            details += Test("Log unmute, successful", StaffLogs.LogUnmute(user, createPunishment(PunishmentType.Mute)));
            details += Test("Log kick, successful", StaffLogs.LogKick(Context.User as SocketGuildUser, createPunishment(PunishmentType.Kick)));
            details += Test("Log messages deleted, null message, successful", StaffLogs.LogMessageDeletion(default, Context.Channel));
示例#4
0
        public IHttpActionResult GetStaffLogs(Guid id)
        {
            StaffLogs staffLogs = db.StaffLogs.Find(id);

            if (staffLogs == null)
            {
                return(NotFound());
            }

            return(Ok(staffLogs));
        }
示例#5
0
        public IHttpActionResult DeleteStaffLogs(Guid id)
        {
            StaffLogs staffLogs = db.StaffLogs.Find(id);

            if (staffLogs == null)
            {
                return(NotFound());
            }

            db.StaffLogs.Remove(staffLogs);
            db.SaveChanges();

            return(Ok(staffLogs));
        }
示例#6
0
        private void HookUserEvents()
        {
            bot.UserJoined += async(SocketGuildUser socketGuildUser) =>
            {
                var guild = await Guilds.GetAsync(socketGuildUser.Guild);

                if (guild is null)
                {
                    return;
                }

                if (guild.General.Announce.IsAllowed(guild.General.Announce.Welcomes.Enabled))
                {
                    await Announce.AnnounceUserJoin(socketGuildUser);
                }
                if (guild.General.Enabled && guild.General.NewMemberRoles.Length > 0)
                {
                    var socketGuild = socketGuildUser.Guild;
                    var roles       = guild.General.NewMemberRoles.Where(id => socketGuild.GetRole(id) != null);
                    var foundRoles  = roles.Select(id => socketGuild.GetRole(id));

                    foreach (var role in foundRoles)
                    {
                        try { await socketGuildUser.AddRolesAsync(foundRoles); }
                        catch {}
                    }
                }
            };

            bot.UserLeft += async(SocketGuildUser socketGuildUser) =>
            {
                var guild = await Guilds.GetAsync(socketGuildUser.Guild);

                if (guild is null)
                {
                    return;
                }

                if (guild.General.Announce.IsAllowed(guild.General.Announce.Goodbyes.Enabled))
                {
                    await Announce.AnnounceUserLeft(socketGuildUser);
                }
                if (guild.Admin.Rulebox.Enabled)
                {
                    await Rulebox.RemoveUserReaction(socketGuildUser);
                }

                if (ShouldLog(LogEvent.Kick, guild))
                {
                    await StaffLogs.LogKick(socketGuildUser);
                }
            };

            bot.GuildMemberUpdated += async(SocketGuildUser socketGuildUser, SocketGuildUser instigator) =>
            {
                var guild = await Guilds.GetAsync(socketGuildUser.Guild);

                if (guild is null)
                {
                    return;
                }

                if (guild.Moderation.Auto.Enabled && guild.Moderation.Auto.ExplicitUsernamePunishment != PunishmentType.None)
                {
                    await Auto.ValidateUsername(guild, socketGuildUser);
                }
            };

            bot.UserBanned += async(SocketUser socketUser, SocketGuild socketGuild) =>
            {
                var guild = await Guilds.GetAsync(socketGuild);

                if (guild is null)
                {
                    return;
                }

                if (ShouldLog(LogEvent.Ban, guild))
                {
                    await StaffLogs.LogBan(socketUser, socketGuild);
                }
            };
            bot.UserUnbanned += async(SocketUser socketUser, SocketGuild socketGuild) =>
            {
                var guild = await Guilds.GetAsync(socketGuild);

                if (guild is null)
                {
                    return;
                }

                if (ShouldLog(LogEvent.Unban, guild))
                {
                    await StaffLogs.LogUnban(socketUser, socketGuild);
                }
            };

            GuildUser.Muted += async(GuildUser guildUser, Punishment punishment) =>
            {
                var socketGuild = bot.GetGuild(guildUser.GuildID);
                var guild       = await Guilds.GetAsync(socketGuild);

                if (guild is null)
                {
                    return;
                }

                if (ShouldLog(LogEvent.Mute, guild))
                {
                    await StaffLogs.LogMute(guildUser, punishment);
                }
            };
            GuildUser.Unmuted += async(GuildUser guildUser, Punishment punishment) =>
            {
                var socketGuild = bot.GetGuild(guildUser.GuildID);
                var guild       = await Guilds.GetAsync(socketGuild);

                if (guild is null)
                {
                    return;
                }

                if (ShouldLog(LogEvent.Unmute, guild))
                {
                    await StaffLogs.LogUnmute(guildUser, punishment);
                }
            };
            GuildUser.Warned += async(GuildUser guildUser, Punishment punishment) =>
            {
                var socketGuild = bot.GetGuild(guildUser.GuildID);
                var guild       = await Guilds.GetAsync(socketGuild);

                if (guild is null)
                {
                    return;
                }

                if (ShouldLog(LogEvent.Warn, guild))
                {
                    await StaffLogs.LogWarn(guildUser, punishment);
                }
            };
        }
示例#7
0
        private void HookMessageEvents()
        {
            bot.ReactionAdded += async(Cacheable <IUserMessage, ulong> before, ISocketMessageChannel channel, SocketReaction reaction) =>
            {
                var socketGuildUser = reaction.User.Value as SocketGuildUser;
                var guild           = await Guilds.GetAsync(socketGuildUser?.Guild);

                if (guild is null)
                {
                    return;
                }

                if (guild.Admin.Rulebox.Enabled)
                {
                    await Rulebox.CheckRuleAgreement(guild, socketGuildUser, reaction);
                }

                if (reaction.Message.IsSpecified && reaction.Message.Value != null)
                {
                    await Users.CheckReputationAdded(reaction.Message.Value, reaction);
                }
            };

            bot.ReactionRemoved += async(Cacheable <IUserMessage, ulong> before, ISocketMessageChannel channel, SocketReaction reaction) =>
            {
                var socketGuild = (channel as SocketTextChannel)?.Guild;
                var guild       = await Guilds.GetAsync(socketGuild);

                if (guild is null)
                {
                    return;
                }

                if (guild.Admin.Rulebox.Enabled)
                {
                    await Rulebox.OnReactionRemoved(before, channel, reaction);
                }

                if (reaction.Message.IsSpecified && reaction.Message.Value != null)
                {
                    await Users.CheckReputationRemoved(reaction.Message.Value, reaction);
                }
            };

            bot.MessageReceived += async(SocketMessage message) =>
            {
                var textChannel = (message as SocketMessage)?.Channel as SocketTextChannel;
                if (textChannel is null)
                {
                    return;
                }

                var socketGuild = textChannel.Guild;
                var guild       = await Guilds.GetAsync(socketGuild);

                if (guild is null)
                {
                    return;
                }

                await Auto.ValidateMessage(message);

                await services.GetRequiredService <CommandHandler>().HandleCommandAsync(message);

                await Users.GetAsync(message.Author);
            };

            bot.MessageUpdated += async(Cacheable <IMessage, ulong> before, SocketMessage message, ISocketMessageChannel channel) =>
            {
                var socketGuildUser = before.Value?.Author as SocketGuildUser;
                if (socketGuildUser is null)
                {
                    return;
                }

                var guild = await Guilds.GetAsync(socketGuildUser.Guild);

                if (guild is null)
                {
                    return;
                }

                if (guild.Moderation.StaffLogs.Enabled)
                {
                    await Auto.ValidateMessage(message);
                }
            };

            bot.MessagesBulkDeleted += async(IReadOnlyCollection <Cacheable <IMessage, ulong> > messages, ISocketMessageChannel channel) =>
            {
                var socketGuild = (channel as SocketTextChannel)?.Guild;
                if (socketGuild is null)
                {
                    return;
                }

                var guild = await Guilds.GetAsync(socketGuild);

                if (guild is null)
                {
                    return;
                }

                if (guild.Moderation.StaffLogs.Enabled && ShouldLog(LogEvent.MessageBulkDeleted, guild))
                {
                    await StaffLogs.LogBulkMessageDeletion(messages, channel);
                }
            };

            bot.MessageDeleted += async(Cacheable <IMessage, ulong> message, ISocketMessageChannel channel) =>
            {
                var socketGuild = (message.Value?.Author as SocketGuildUser)?.Guild;
                if (socketGuild is null)
                {
                    return;
                }

                var guild = await Guilds.GetAsync(socketGuild);

                if (guild is null)
                {
                    return;
                }

                if (guild.Moderation.StaffLogs.Enabled && ShouldLog(LogEvent.MessageDeleted, guild))
                {
                    await StaffLogs.LogMessageDeletion(message, channel);
                }
            };
        }