コード例 #1
0
 private void FillDictionary(Dictionary <string, MuteSettings> muteItems, Dictionary <string, MuteItem> dict)
 {
     foreach (var pair in muteItems)
     {
         dict.Add(pair.Key, MuteItem.Create(pair.Key, pair.Value.TimeToMute, pair.Value.Type));
     }
 }
コード例 #2
0
        void cmdChatMutes(BasePlayer player, string command, string[] args)
        {
            if (args.Length > 1)
            {
                player.ChatMessage(m_configData.Messages["invalid_arguments"]);
                return;
            }

            List <ulong> contextPlayers = new List <ulong>();

            foreach (ulong userID in m_configData.MutedPlayers.Keys)
            {
                string playerName = PlayerName(userID);
                if (args.Length == 1 && !playerName.Contains(args[0], System.Globalization.CompareOptions.IgnoreCase))
                {
                    continue;
                }

                MuteItem muteItem = m_configData.MutedPlayers[userID];
                contextPlayers.Add(userID);

                string message = m_configData.Messages["player_was_muted"];
                message = message.Replace("%player_name", playerName);
                message = message.Replace("%player_steamid", userID.ToString());
                message = message.Replace("%reason", muteItem.reason);
                message = message.Replace("%until_datetime", muteItem.untilDatetime().ToString("yyyy-MM-dd HH:mm:ss"));
                message = message.Replace("%level", m_configData.Messages[muteItem.level.ToString()]);

                player.ChatMessage(contextPlayers.Count.ToString() + ") " + muteItem.timestamp + " " + message);
            }
            SetContextPlayers(player.userID, contextPlayers);
        }
コード例 #3
0
        void cmdChatUnnute(BasePlayer player, string command, string[] args)
        {
            if (player.net.connection.authLevel == 0 && !permission.UserHasPermission(player.userID.ToString(), "SSNNotifier.unmute"))
            {
                player.ChatMessage(m_configData.Messages["have_not_permission"]);
                return;
            }

            if (args.Length != 1)
            {
                player.ChatMessage(m_configData.Messages["invalid_arguments"]);
                return;
            }

            ulong userID = UserIdByAlias(player.userID, args[0]);

            if (userID == 0)
            {
                player.ChatMessage(m_configData.Messages["player_not_found"]);
                return;
            }

            string playerName = PlayerName(userID);

            if (m_configData.MutedPlayers.ContainsKey(userID))
            {
                MuteItem muteItem = m_configData.MutedPlayers[userID];
                if (muteItem.level == TimeRange.Hour)
                {
                    m_configData.MutedPlayers.Remove(userID);
                }
                else
                {
                    muteItem.level = (TimeRange)((int)muteItem.level - 1);
                }
                SaveConfig();

                string message = m_configData.Messages["player_was_unmuted"];
                message = message.Replace("%player_name", playerName);
                message = message.Replace("%player_steamid", userID.ToString());

                PrintToChat(message);
            }
            else
            {
                string message = m_configData.Messages["player_was_not_muted"];
                message = message.Replace("%player_name", playerName);
                message = message.Replace("%player_steamid", userID.ToString());

                player.ChatMessage(message);
            }
        }
コード例 #4
0
        private async Task ProcessMessageFromQueue(SlackNotificationRequestMsg msg, string queueName)
        {
            try
            {
                MuteItem muteItem = await _notificationFilter.GetMutedItem(msg);

                if (muteItem != null && string.IsNullOrEmpty(muteItem.Type))
                {
                    muteItem.MutedMessagesCount++;

                    if (muteItem.MutedMessagesCount > 1)
                    {
                        return;
                    }

                    await _srvSlackNotifications.SendNotificationAsync(
                        msg.Type,
                        $"*[This message is muted for {muteItem.TimeToMute.TotalMinutes} minute(s)! (using: '{muteItem.Value}')]*: {msg.Message}",
                        $"*[:tired_face: muted :tired_face: ]* {msg.Sender}");

                    return;
                }

                string message = msg.Message;

                if (muteItem?.Type != null && muteItem.Type != msg.Type)
                {
                    message = $"[redirected from {msg.Type}] {message}";
                }

                await _srvSlackNotifications.SendNotificationAsync(muteItem?.Type ?? msg.Type, message, msg.Sender);
            }
            catch (Exception ex)
            {
                _log.WriteError($"ProcessMessageFromQueue: {queueName}", msg, ex);
                throw;
            }
        }
コード例 #5
0
        object OnPlayerChat(ConsoleSystem.Arg arg)
        {
            BasePlayer player = arg.Player();

            string message = "";

            foreach (string line in arg.Args)
            {
                message += line + " ";
            }
            message = message.Trim();

            if (m_configData.MutedPlayers.ContainsKey(player.userID))
            {
                MuteItem muteItem = m_configData.MutedPlayers[player.userID];

                if (muteItem.untilDatetime() > DateTime.Now)
                {
                    message = m_configData.Messages["player_was_muted"];
                    message = message.Replace("%player_name", player.displayName);
                    message = message.Replace("%player_steamid", player.userID.ToString());
                    message = message.Replace("%reason", muteItem.reason);
                    message = message.Replace("%until_datetime", muteItem.untilDatetime().ToString("yyyy-MM-dd HH:mm:ss"));
                    message = message.Replace("%level", m_configData.Messages[muteItem.level.ToString()]);

                    player.ChatMessage(message);
                    return("handled");
                }
            }

            if (message != "" && message[0] != '/')
            {
                NotifyPlayerChatMessage(player.userID, player.displayName, message);
            }

            return(null);
        }
コード例 #6
0
        void cmdChatMute(BasePlayer player, string command, string[] args)
        {
            string message;

            if (player.net.connection.authLevel == 0 && !permission.UserHasPermission(player.userID.ToString(), "SSNMutes.mute"))
            {
                return;
            }

            if (args.Length < 2)
            {
                player.ChatMessage(m_configData.Messages["invalid_arguments"]);
                return;
            }

            ulong userID = UserIdByAlias(player.userID, args[0]);

            if (userID == 0)
            {
                player.ChatMessage(m_configData.Messages["player_not_found"]);
                return;
            }

            string playerName = PlayerName(userID);

            string reason = "";

            for (int i = 1; i < args.Length; ++i)
            {
                reason += args[i];
                if (i < args.Length - 1)
                {
                    reason += " ";
                }
            }

            MuteItem muteItem;

            if (m_configData.MutedPlayers.ContainsKey(userID))
            {
                muteItem = m_configData.MutedPlayers[userID];
                if (muteItem.untilDatetime() > DateTime.Now)
                {
                    message = m_configData.Messages["player_is_muted_already"];
                    message = message.Replace("%player_name", playerName);
                    message = message.Replace("%player_steamid", userID.ToString());
                    message = message.Replace("%reason", muteItem.reason);
                    message = message.Replace("%until_datetime", muteItem.untilDatetime().ToString("yyyy-MM-dd HH:mm:ss"));
                    message = message.Replace("%level", m_configData.Messages[muteItem.level.ToString()]);

                    player.ChatMessage(message);
                    return;
                }

                int intLevel = (int)muteItem.level + 1;
                if (intLevel > (int)TimeRange.Year)
                {
                    intLevel = (int)TimeRange.Year;
                }
                muteItem.level = (TimeRange)intLevel;
            }
            else
            {
                muteItem = new MuteItem();
            }

            muteItem.reason    = reason;
            muteItem.timestamp = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
            m_configData.MutedPlayers[userID] = muteItem;
            SaveConfig();

            message = m_configData.Messages["player_was_muted"];
            message = message.Replace("%player_name", playerName);
            message = message.Replace("%player_steamid", userID.ToString());
            message = message.Replace("%reason", muteItem.reason);
            message = message.Replace("%until_datetime", muteItem.untilDatetime().ToString("yyyy-MM-dd HH:mm:ss"));
            message = message.Replace("%level", m_configData.Messages[muteItem.level.ToString()]);

            ConsoleSystem.Broadcast("chat.add", 0, message, 1.0);

            NotifyPlayerMute(userID, playerName, reason);
        }
コード例 #7
0
        void cmdChatMute(BasePlayer player, string command, string[] args)
        {
            string message;

            if (player != null)
            {
                if (player.net.connection.authLevel == 0 && !permission.UserHasPermission(player.userID.ToString(), "SSNNotifier.mute"))
                {
                    player.ChatMessage(m_configData.Messages["have_not_permission"]);
                    return;
                }
            }

            if (args.Length < 2)
            {
                if (player != null)
                {
                    player.ChatMessage(m_configData.Messages["invalid_arguments"]);
                }
                return;
            }

            ulong userID = UserIdByAlias(player.userID, args[0]);

            if (userID == 0)
            {
                if (player != null)
                {
                    player.ChatMessage(m_configData.Messages["player_not_found"]);
                }
                return;
            }

            int level = -1;

            if (!int.TryParse(args[1], out level))
            {
                level = -1;
            }

            string reason       = "";
            int    reasonOffset = 1 + (level > -1 ? 1 : 0);

            for (int i = reasonOffset; i < args.Length; ++i)
            {
                reason += args[i];
                if (i < args.Length - 1)
                {
                    reason += " ";
                }
            }

            MuteItem muteItem;

            if (m_configData.MutedPlayers.ContainsKey(userID))
            {
                muteItem = m_configData.MutedPlayers[userID];
                if (muteItem.untilDatetime() > DateTime.Now)
                {
                    message = m_configData.Messages["player_is_muted_already"];
                    message = message.Replace("%player_name", CustomOrRealPlayerName(userID));
                    message = message.Replace("%player_steamid", userID.ToString());
                    message = message.Replace("%reason", muteItem.reason);
                    message = message.Replace("%until_datetime", muteItem.untilDatetime().ToString("yyyy-MM-dd HH:mm:ss"));
                    message = message.Replace("%level", m_configData.Messages[muteItem.level.ToString()]);

                    if (player != null)
                    {
                        player.ChatMessage(message);
                    }
                    return;
                }

                if (level == -1)
                {
                    level = (int)muteItem.level + 1;
                }
            }
            else
            {
                muteItem = new MuteItem();
            }

            if (level > (int)TimeRange.Year)
            {
                level = (int)TimeRange.Year;
            }
            muteItem.level = (TimeRange)level;

            muteItem.reason    = reason;
            muteItem.timestamp = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
            m_configData.MutedPlayers[userID] = muteItem;
            SaveConfig();

            message = m_configData.Messages["player_was_muted"];
            message = message.Replace("%player_name", CustomOrRealPlayerName(userID));
            message = message.Replace("%player_steamid", userID.ToString());
            message = message.Replace("%reason", muteItem.reason);
            message = message.Replace("%until_datetime", muteItem.untilDatetime().ToString("yyyy-MM-dd HH:mm:ss"));
            message = message.Replace("%level", m_configData.Messages[muteItem.level.ToString()]);

            PrintToChat(message);

            NotifyPlayerMute(userID, reason);
        }
コード例 #8
0
 public void MuteRegexMessage(MuteItem item)
 {
     _mutedMessagesRegex[item.Value] = item;
 }
コード例 #9
0
 public void MuteMessagePrefix(MuteItem item)
 {
     _mutedPrefixes[item.Value] = item;
 }
コード例 #10
0
 public void MuteSender(MuteItem item)
 {
     _mutedSenders[item.Value] = item;
 }
コード例 #11
0
 public MuteItem ToDomain() => MuteItem.Create(Value, TimeToMute, Type);