public Infraction AddTemporaryInfraction(TemporaryInfractionType type, IUser user, IUser moderator, TimeSpan duration, string reason = "", string additionalInfo = "")
        {
            Infraction infraction = AddTemporaryInfraction(type, user.Id, moderator, duration, reason, additionalInfo);

            SendTemporaryInfractionMessageToUser(user, infraction, duration);

            return(infraction);
        }
Exemple #2
0
        public void ClearTemporaryInfraction(TemporaryInfractionType type, ulong userId)
        {
            var userData = _data.UserData.GetOrCreate(userId);

            userData.TemporaryInfractions.RemoveAll(i => i.Type == type);

            _data.SaveUserData();
        }
        public static InfractionType AsInfractionType(this TemporaryInfractionType t)
        {
            switch (t)
            {
            case TemporaryInfractionType.TempBan: return(InfractionType.TemporaryBan);

            case TemporaryInfractionType.TempMute: return(InfractionType.TemporaryMute);

            default: throw new ArgumentException($"{nameof(InfractionType)} does not contain a valid counterpart for {t}.");
            }
        }
Exemple #4
0
        public Infraction AddTemporaryInfraction(TemporaryInfractionType type, ulong userId, IUser moderator, TimeSpan duration, string reason = "")
        {
            var userData = _data.UserData.GetOrCreate(userId);

            // Ensure that same-type infractions do not stack.
            userData.TemporaryInfractions.RemoveAll(i => i.Type == type);

            userData.TemporaryInfractions.Add(TemporaryInfraction.Create(type, DateTime.UtcNow.Add(duration)));
            Infraction infraction = Infraction.Create(RequestInfractionID())
                                    .WithType(type.AsInfractionType())
                                    .WithModerator(moderator)
                                    .WithDescription(reason)
                                    .WithAdditionalInfo($"Duration: {duration.Humanize(7)}");

            userData.Infractions.Add(infraction);

            _data.SaveUserData();

            return(infraction);
        }
Exemple #5
0
 public void ClearTemporaryInfraction(TemporaryInfractionType type, IUser user)
 => ClearTemporaryInfraction(type, user.Id);
Exemple #6
0
        public void AddTemporaryInfraction(TemporaryInfractionType type, IUser user, IUser moderator, TimeSpan duration, string reason = "")
        {
            Infraction infraction = AddTemporaryInfraction(type, user.Id, moderator, duration, reason);

            SendInfractionMessageToUser(user, infraction);
        }
Exemple #7
0
 private TemporaryInfraction(TemporaryInfractionType type, DateTime expire)
 {
     Type   = type;
     Expire = expire;
 }
Exemple #8
0
 public static TemporaryInfraction Create(TemporaryInfractionType type, DateTime expire)
 => new TemporaryInfraction(type, expire);
 public bool HasTemporaryInfraction(TemporaryInfractionType type)
 => TemporaryInfractions.Any(i => i.Type == type);