Ejemplo n.º 1
0
        private void Callbacks_PlayerConnect(object sender, PlayerConnectEventArgs e)
        {
            if (e.Handled)
            {
                return;
            }

            RunCatchLog(() =>
            {
                if (ClanMembers.Contains(e.Login.ToLower()))
                {
                    return;
                }

                string nickname = GetNickname(e.Login);

                if (nickname == null)
                {
                    Logger.Debug(string.Format("Could not determine nickname for login: {0}", e.Login));
                    return;
                }

                if (!Regex.IsMatch(nickname, Pattern, RegexOptions.Singleline | RegexOptions.IgnoreCase | RegexOptions.Compiled))
                {
                    return;
                }

                GenericResponse <bool> kickResponse = Context.RPCClient.Methods.Kick(e.Login, KickReason);

                if (kickResponse.Erroneous)
                {
                    Logger.Debug(string.Format("Could not kick login: {0}. Reason: {1}({2})", e.Login, kickResponse.Fault.FaultMessage, kickResponse.Fault.FaultCode));
                    return;
                }

                if (kickResponse.Value)
                {
                    Logger.InfoToUI(string.Format("Login {0} with player name {1} was kicked due to name abuse!", e.Login, nickname));

                    SendFormattedMessage(PublicKickReason, "Nickname", StripTMColorsAndFormatting(nickname));
                    e.Handled = true;
                }
                else
                {
                    Logger.Debug(string.Format("Could not kick login: {0}. Kickresposne returned: false", e.Login));
                }
            }, "Error in Callbacks_PlayerConnect Method.", true);
        }