Example #1
0
        public async Task Process(Say say)
        {
            if (!IsLoggedIn)
            {
                return;
            }
            if (User.BanMute)
            {
                return;               // block all say for muted
            }
            say.User = Name;
            say.Time = DateTime.UtcNow;

            if (say.Ring)
            {
                if (!User.IsAdmin)
                {
                    if (((say.Place != SayPlace.Battle) && (say.Place != SayPlace.BattlePrivate)) || (MyBattle == null) ||
                        (MyBattle.FounderName != Name))
                    {
                        say.Ring = false;
                    }
                }
            }



            // verify basic permissions to talk
            switch (say.Place)
            {
            case SayPlace.Channel:
                if (server.Channels.Get(say.Target)?.Users?.ContainsKey(Name) != true)
                {
                    return;
                }
                break;

            case SayPlace.Battle:
                if (MyBattle?.Users?.Keys.Contains(Name) != true)
                {
                    return;
                }
                break;

            case SayPlace.BattlePrivate:
                return;

                break;

            case SayPlace.MessageBox:
                if (!User.IsAdmin)
                {
                    return;
                }
                break;
            }

            await server.GhostSay(say, MyBattle?.BattleID);
        }
 public void SendMessage(ChatRelayMessage message)
 {
     try
     {
         if (message.Source != SaySource.Zk)
         {
             server.GhostSay(message.ToSay());
         }
     }
     catch (Exception ex)
     {
         Trace.TraceWarning("Error relaying message to Zkls: {0}", ex);
     }
 }
Example #3
0
 void OnSpringTasSaid(object sender, TasSayEventArgs args)
 {
     if (args.Place == TasSayEventArgs.Places.Channel && channels.Contains(args.Channel) && args.UserName != springTas.UserName)
     {
         zkServer.GhostSay(new Say()
         {
             Place      = SayPlace.Channel,
             Text       = args.Text,
             IsEmote    = args.IsEmote,
             Time       = DateTime.UtcNow,
             Target     = args.Channel,
             User       = args.UserName,
             AllowRelay = false
         });
     }
 }
        void OnZkServerSaid(object sender, Say say)
        {
            try
            {
                if (say.Text?.StartsWith("!") == true)
                {
                    ConnectedUser conus;
                    if (server.ConnectedUsers.TryGetValue(say.User, out conus) && conus.User.IsAdmin)
                    {
                        var parts    = say.Text.Split(new[] { ' ' }, 2);
                        var command  = parts.FirstOrDefault();
                        var argument = parts.Skip(1).FirstOrDefault();

                        switch (command)
                        {
                        case "!announce":
                            server.GhostSay(new Say()
                            {
                                Text = argument, User = say.User, Place = SayPlace.MessageBox, Ring = true,
                            });
                            break;

                        case "!topic":
                            if (say.Place == SayPlace.Channel && !string.IsNullOrEmpty(say.Target))
                            {
                                server.SetTopic(say.Target, argument, say.User);
                            }
                            break;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Trace.TraceWarning("Error processing message  {0} {1} : {2}", say?.User, say?.Text, ex);
            }
        }
Example #5
0
        public async Task Process(Say say)
        {
            if (!IsLoggedIn)
            {
                return;
            }
            if (User.BanMute)
            {
                return;               // block all say for muted
            }
            if (DateTime.UtcNow < chatWait)
            {
                return;                             //block all say for spam
            }
            if (say.Text.Length > GlobalConst.LobbyMaxMessageSize)
            {
                say.Text = say.Text.Substring(0, GlobalConst.LobbyMaxMessageSize);
            }
            if (DateTime.UtcNow.AddMilliseconds(-5 * GlobalConst.MinMillisecondsBetweenMessages) > chatWait)
            {
                chatWait = DateTime.UtcNow.AddMilliseconds(-5 * GlobalConst.MinMillisecondsBetweenMessages);
            }
            chatWait = chatWait.AddMilliseconds(Math.Max(GlobalConst.MinMillisecondsBetweenMessages, GlobalConst.MillisecondsPerCharacter * say.Text.Length));

            say.User = Name;
            say.Time = DateTime.UtcNow;

            if (say.Ring)
            {
                if (!User.IsAdmin)
                {
                    if (((say.Place != SayPlace.Battle) && (say.Place != SayPlace.BattlePrivate)) || (MyBattle == null) ||
                        (MyBattle.FounderName != Name))
                    {
                        say.Ring = false;
                    }
                }
            }



            // verify basic permissions to talk
            switch (say.Place)
            {
            case SayPlace.Channel:
                if (server.Channels.Get(say.Target)?.Users?.ContainsKey(Name) != true)
                {
                    return;
                }
                break;

            case SayPlace.Battle:
                if (MyBattle?.Users?.Keys.Contains(Name) != true)
                {
                    return;
                }
                break;

            case SayPlace.BattlePrivate:
                return;

                break;

            case SayPlace.MessageBox:
                if (!User.IsAdmin)
                {
                    return;
                }
                break;
            }

            await server.GhostSay(say, MyBattle?.BattleID);
        }