Beispiel #1
0
        public static void SendModeration(string targetUserId, ModerationType mType, string reason, ModerationTimeRange expires, string worldId = "", string worldInstanceId = "", Action <ApiModelContainer <ApiModeration> > successCallback = null, Action <ApiModelContainer <ApiModeration> > errorCallback = null)
        {
            ApiModeration apiModeration = new ApiModeration(targetUserId);

            apiModeration.moderationType = mType;
            apiModeration.reasonMessage  = reason;
            apiModeration.worldId        = worldId;
            apiModeration.instanceId     = worldInstanceId;
            apiModeration.expiresRange   = expires;
            ApiModeration apiModeration2 = apiModeration;

            apiModeration2.Save(delegate(ApiContainer c)
            {
                if (successCallback != null)
                {
                    successCallback(c as ApiModelContainer <ApiModeration>);
                }
            }, delegate(ApiContainer c)
            {
                if (errorCallback != null)
                {
                    errorCallback(c as ApiModelContainer <ApiModeration>);
                }
            });
        }
 public TimeLimitedInfraction(DateTimeOffset ends, ulong userId, ulong guildId, ModerationType type)
 {
     Ends    = ends;
     UserId  = userId;
     GuildId = guildId;
     Type    = type;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="ModeratedClientEntity"/> struct.
 /// </summary>
 /// <param name="type">The type.</param>
 /// <param name="moderatorDatabaseId">The moderator database id.</param>
 /// <param name="userDatabaseId">The user database id.</param>
 /// <param name="serverGroup">The server group.</param>
 public ModeratedClientEntity(ModerationType type, uint moderatorDatabaseId, uint userDatabaseId, uint serverGroup)
 {
     Type        = type;
     Moderator   = moderatorDatabaseId;
     User        = userDatabaseId;
     ServerGroup = serverGroup;
     Moderated   = DateTime.UtcNow;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="ModeratedClientEntity"/> struct.
 /// </summary>
 /// <param name="type">The type.</param>
 /// <param name="moderatorDatabaseId">The moderator database id.</param>
 /// <param name="userDatabaseId">The user database id.</param>
 /// <param name="serverGroup">The server group.</param>
 public ModeratedClientEntity(ModerationType type, uint moderatorDatabaseId, uint userDatabaseId, uint serverGroup)
 {
     Type = type;
     Moderator = moderatorDatabaseId;
     User = userDatabaseId;
     ServerGroup = serverGroup;
     Moderated = DateTime.UtcNow;
 }
Beispiel #5
0
 public static void SendModeration(string targetUserId, ModerationType type)
 {
     if (!string.IsNullOrEmpty(targetUserId))
     {
         VRCApi.Request <ApiPlayerModeration>(MainForm.Instance.OnSendModeration, "auth/user/playermoderations", ApiMethod.POST, new Dictionary <string, object>
         {
             ["moderated"] = targetUserId,
             ["type"]      = ModerationTypeToAPIString(type)
         });
     }
 }
Beispiel #6
0
 public static void DeleteModeration(string targetUserId, ModerationType type)
 {
     if (!string.IsNullOrEmpty(targetUserId))
     {
         VRCApi.Request <ApiResponse>(MainForm.Instance.OnDeleteModeration, "auth/user/unplayermoderate", ApiMethod.PUT, new Dictionary <string, object>
         {
             ["moderated"] = targetUserId,
             ["type"]      = ModerationTypeToAPIString(type)
         });
     }
 }
Beispiel #7
0
 private static EmbedBuilder GetBaseEmbed(ModerationType type)
 {
     return(new EmbedBuilder()
     {
         Author = new EmbedAuthorBuilder()
         {
             Name = type.ToString()
         },
         Timestamp = DateTimeOffset.UtcNow,
         Color = BotCore.EmbedColor
     });
 }
Beispiel #8
0
        private static string ModerationTypeToAPIString(ModerationType type)
        {
            switch (type)
            {
            case ModerationType.ShowAvatar:
                return("showAvatar");

            case ModerationType.HideAvatar:
                return("hideAvatar");

            default:
                return(type.ToString().ToLower());
            }
        }
Beispiel #9
0
 /// <summary>
 /// Captures the moderation.
 /// </summary>
 /// <param name="type">The type.</param>
 /// <param name="moderatorDatabaseId">The moderator database id.</param>
 /// <param name="clientDatabaseId">The client database id.</param>
 /// <param name="serverGroupId">The server group id.</param>
 public void CaptureModeration(ModerationType type, uint moderatorDatabaseId, uint clientDatabaseId, uint serverGroupId)
 {
     lock (Container.lockModeratedClientList)
     {
         lock (Repository.Container.lockDatabase)
         {
             using (var command = new SQLiteCommand(this.Container.DatabaseConnection))
             {
                 command.CommandText = string.Format("INSERT INTO Moderate(ClientDatabaseId, ModeratorDatabaseId, ServerGroupId, Type, CreationDate) VALUES({0}, {1}, {2}, {3}, {4})", clientDatabaseId, moderatorDatabaseId, serverGroupId, (int)type, DateTime.UtcNow.ToTimeStamp());
                 command.ExecuteNonQuery();
             }
         }
     }
 }
Beispiel #10
0
 private static bool TryGetLogChannel(SocketGuild guild, ModerationType type, out SocketTextChannel channel, out EmbedBuilder baseEmbed)
 {
     if (GuildEventLoggerSettings.TryGetValue(guild.Id, out EventLoggerSettings settings))
     {
         if (settings.UserModLogChannels.TryGetValue(type, out ulong channelId))
         {
             channel   = guild.GetTextChannel(channelId);
             baseEmbed = GetBaseEmbed(type);
             return(channel != null);
         }
     }
     channel   = default;
     baseEmbed = null;
     return(false);
 }
 public UserModerationEntry(ulong guildId, ModerationType type, DateTimeOffset?timestamp, SocketGuildUser actor, string reason = null, string info = null)
 {
     GuildId = guildId;
     Type    = type;
     if (timestamp.HasValue)
     {
         Timestamp = timestamp.Value;
     }
     else
     {
         Timestamp = DateTimeOffset.UtcNow;
     }
     Reason    = reason;
     Info      = info;
     ActorId   = actor.Id;
     ActorName = actor.ToString();
 }
Beispiel #12
0
 /// <summary>
 /// Captures the moderation.
 /// </summary>
 /// <param name="type">The type.</param>
 /// <param name="moderatorDatabaseId">The moderator database id.</param>
 /// <param name="clientDatabaseId">The client database id.</param>
 /// <param name="serverGroupId">The server group id.</param>
 public void CaptureModeration(ModerationType type, uint moderatorDatabaseId, uint clientDatabaseId, uint serverGroupId)
 {
     lock (Container.lockModeratedClientList)
     {
         lock (Repository.Container.lockDatabase)
         {
             Repository.Container.Database.Moderate.AddObject(new Moderate
             {
                 Id = Guid.NewGuid(),
                 ClientDatabaseId    = (int)clientDatabaseId,
                 ModeratorDatabaseId = (int)moderatorDatabaseId,
                 Creation            = DateTime.UtcNow,
                 ServerGroup         = (int)serverGroupId,
                 Type = (byte)type
             });
             Repository.Container.Database.SaveChanges();
         }
     }
 }
Beispiel #13
0
        public static void DeleteModeration(string targetUserId, ModerationType mType, Action <ApiPlayerModeration> successCallback, Action <string> errorCallback)
        {
            ApiPlayerModeration         apiPlayerModeration = CreateRemovalModeration();
            Dictionary <string, object> dictionary          = new Dictionary <string, object>();

            dictionary["moderated"] = targetUserId;
            dictionary["type"]      = ModerationTypeToAPIString(mType);
            apiPlayerModeration.Put(delegate(ApiContainer c)
            {
                if (successCallback != null)
                {
                    successCallback(c.Model as ApiPlayerModeration);
                }
            }, delegate(ApiContainer c)
            {
                if (errorCallback != null)
                {
                    errorCallback(c.Error);
                }
            }, dictionary);
        }
Beispiel #14
0
        public static void SendModeration(string targetUserId, ModerationType mType, Action <ApiPlayerModeration> successCallback = null, Action <string> errorCallback = null)
        {
            ApiPlayerModeration apiPlayerModeration = new ApiPlayerModeration();

            apiPlayerModeration.targetUserId   = targetUserId;
            apiPlayerModeration.moderationType = mType;
            ApiPlayerModeration apiPlayerModeration2 = apiPlayerModeration;

            apiPlayerModeration2.Save(delegate(ApiContainer c)
            {
                if (successCallback != null)
                {
                    successCallback(c.Model as ApiPlayerModeration);
                }
            }, delegate(ApiContainer c)
            {
                if (errorCallback != null)
                {
                    errorCallback(c.Error);
                }
            });
        }
Beispiel #15
0
        /// <summary>
        /// Gets the moderation.
        /// </summary>
        /// <param name="type">The type.</param>
        /// <param name="fromDate">From date.</param>
        /// <param name="toDate">To date.</param>
        /// <returns></returns>
        public IEnumerable <ModeratedClientEntity> GetModeration(ModerationType type, DateTime?fromDate, DateTime?toDate)
        {
            lock (Container.lockModeratedClientList)
            {
                lock (Repository.Container.lockDatabase)
                {
                    using (var command = new SQLiteCommand(this.Container.DatabaseConnection))
                    {
                        command.CommandText = string.Format("SELECT ClientDatabaseId, ModeratorDatabaseId, ServerGroupId, Type, CreationDate FROM Moderate WHERE Type = {0}", (int)type);
                        if (fromDate.HasValue)
                        {
                            command.CommandText += string.Format(" AND CreationDate > {0}", fromDate.Value.ToTimeStamp());
                        }
                        if (toDate.HasValue)
                        {
                            command.CommandText += string.Format(" AND CreationDate < {0}", toDate.Value.ToTimeStamp());
                        }

                        var result = new List <ModeratedClientEntity>();
                        using (var reader = command.ExecuteReader())
                        {
                            while (reader.HasRows && reader.Read())
                            {
                                result.Add(new ModeratedClientEntity
                                {
                                    User        = (uint)reader.GetInt32(0),
                                    Moderator   = (uint)reader.GetInt32(1),
                                    ServerGroup = (uint)reader.GetInt32(2),
                                    Type        = type,
                                    Moderated   = reader.GetInt64(4).ToDateTime()
                                });
                            }
                        }
                        return(result);
                    }
                }
            }
        }
Beispiel #16
0
        /// <summary>
        /// Gets the moderation.
        /// </summary>
        /// <param name="type">The type.</param>
        /// <param name="fromDate">From date.</param>
        /// <param name="toDate">To date.</param>
        /// <returns></returns>
        public IEnumerable <Moderate> GetModeration(ModerationType type, DateTime?fromDate, DateTime?toDate)
        {
            lock (Container.lockModeratedClientList)
            {
                var moderationType = (byte)type;
                lock (Repository.Container.lockDatabase)
                {
                    var entities = Repository.Container.Database.Moderate.Where(m => m.Type == moderationType);

                    if (fromDate.HasValue)
                    {
                        entities = entities.Where(m => m.Creation > fromDate);
                    }

                    if (toDate.HasValue)
                    {
                        entities = entities.Where(m => m.Creation < toDate);
                    }

                    return(entities.ToList());
                }
            }
        }
Beispiel #17
0
        public static string Convert(this ModerationType type)
        {
            switch (type)
            {
            default:
                return(null);

            case ModerationType.Block:
                return("block");

            case ModerationType.HideAvatar:
                return("hideAvatar");

            case ModerationType.Mute:
                return("mute");

            case ModerationType.ShowAvatar:
                return("showAvatar");

            case ModerationType.Unmute:
                return("unmute");
            }
        }
Beispiel #18
0
 public void LogTopic(User user, ModerationType moderationType, Topic topic, Forum forum, string comment)
 {
     _moderationLogRepo.Log(DateTime.UtcNow, user.UserID, user.Name, (int)moderationType, forum != null ? forum.ForumID : (int?)null, topic.TopicID, null, comment, String.Empty);
 }
Beispiel #19
0
 public async Task LogTopic(User user, ModerationType moderationType, Topic topic, Forum forum)
 {
     await LogTopic(user, moderationType, topic, forum, String.Empty);
 }
Beispiel #20
0
 public async Task LogTopic(ModerationType moderationType, int topicID)
 {
     await _moderationLogRepo.Log(DateTime.UtcNow, 0, "System", (int)moderationType, null, topicID, null, string.Empty, string.Empty);
 }
Beispiel #21
0
 public void LogPost(User user, ModerationType moderationType, Post post, string comment, string oldText)
 {
     _moderationLogRepo.Log(DateTime.UtcNow, user.UserID, user.Name, (int)moderationType, null, post.TopicID, post.PostID, comment, oldText);
 }
 /// <summary>
 /// Captures the moderation.
 /// </summary>
 /// <param name="type">The type.</param>
 /// <param name="moderatorDatabaseId">The moderator database id.</param>
 /// <param name="clientDatabaseId">The client database id.</param>
 /// <param name="serverGroupId">The server group id.</param>
 public void CaptureModeration(ModerationType type, uint moderatorDatabaseId, uint clientDatabaseId, uint serverGroupId)
 {
     lock (Container.lockModeratedClientList)
     {
         lock (Repository.Container.lockDatabase)
         {
             using (var command = new SQLiteCommand(this.Container.DatabaseConnection))
             {
                 command.CommandText = string.Format("INSERT INTO Moderate(ClientDatabaseId, ModeratorDatabaseId, ServerGroupId, Type, CreationDate) VALUES({0}, {1}, {2}, {3}, {4})", clientDatabaseId, moderatorDatabaseId, serverGroupId, (int)type, DateTime.UtcNow.ToTimeStamp());
                 command.ExecuteNonQuery();
             }
         }
     }
 }
        /// <summary>
        /// Gets the moderation.
        /// </summary>
        /// <param name="type">The type.</param>
        /// <param name="fromDate">From date.</param>
        /// <param name="toDate">To date.</param>
        /// <returns></returns>
        public IEnumerable<ModeratedClientEntity> GetModeration(ModerationType type, DateTime? fromDate, DateTime? toDate)
        {
            lock (Container.lockModeratedClientList)
            {
                lock (Repository.Container.lockDatabase)
                {
                    using (var command = new SQLiteCommand(this.Container.DatabaseConnection))
                    {
                        command.CommandText = string.Format("SELECT ClientDatabaseId, ModeratorDatabaseId, ServerGroupId, Type, CreationDate FROM Moderate WHERE Type = {0}", (int)type);
                        if (fromDate.HasValue) command.CommandText += string.Format(" AND CreationDate > {0}", fromDate.Value.ToTimeStamp());
                        if (toDate.HasValue) command.CommandText += string.Format(" AND CreationDate < {0}", toDate.Value.ToTimeStamp());

                        var result = new List<ModeratedClientEntity>();
                        using (var reader = command.ExecuteReader())
                        {
                            while (reader.HasRows && reader.Read())
                            {
                                result.Add(new ModeratedClientEntity
                                {
                                    User = (uint)reader.GetInt32(0),
                                    Moderator = (uint)reader.GetInt32(1),
                                    ServerGroup = (uint)reader.GetInt32(2),
                                    Type = type,
                                    Moderated = reader.GetInt64(4).ToDateTime()
                                });
                            }
                        }
                        return result;
                    }
                }
            }
        }
Beispiel #24
0
        public static async Task <bool> Moderate(this VRCSharpSession session, APIUser user, ModerationType type)
        {
            HttpClientHandler handler = null;
            HttpClient        client  = new HttpClient();

            if (session.UseProxies)
            {
                //Load proxies from Proxies.txt
                handler       = new HttpClientHandler();
                handler.Proxy = APIExtensions.GetRandomProxy();
                client        = new HttpClient(handler);
            }
            client.DefaultRequestHeaders.Clear();
            client.DefaultRequestHeaders.Add("Authorization", session.AuthToken);
            var payload = JsonConvert.SerializeObject(new ModerationPayload()
            {
                moderated = user.id, type = type.Convert()
            });

            var response = await client.PostAsync($"https://vrchat.com/api/1/auth/user/playermoderations?apiKey={GlobalVars.ApiKey}&userId={user.id}", new StringContent(payload, Encoding.UTF8, "application/json"));

            if (response.StatusCode == HttpStatusCode.OK)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
Beispiel #25
0
 public void LogTopic(User user, ModerationType moderationType, Topic topic, Forum forum)
 {
     LogTopic(user, moderationType, topic, forum, String.Empty);
 }