Example #1
0
 private void OnQueueChat(QueueChatEvent e)
 {
     if (!e.Cancelled)
     {
         this.QueueChat(e.Message);
     }
 }
Example #2
0
        private void OnQueueChat(QueueChatEvent e)
        {
            var pm      = e.Message.StartsWith("/pm ", StringComparison.OrdinalIgnoreCase);
            var kick    = e.Message.StartsWith("/kick ", StringComparison.OrdinalIgnoreCase);
            var sendraw = e.Message.StartsWith(SendPrefix, StringComparison.OrdinalIgnoreCase);

            if (e.Message.StartsWith("/", StringComparison.OrdinalIgnoreCase) && !pm && !kick && !sendraw)
            {
                return;
            }

            if (pm || kick)
            {
                var args    = e.Message.Split(' ');
                var target  = args.Skip(1).FirstOrDefault();
                var message = String.Join(" ", args.Skip(2));
                if (String.IsNullOrEmpty(message))
                {
                    message = "Tsk Tsk Tsk";
                }

                e.Message = pm
                    ? this.SyntaxProvider.ApplyPrivateMessageSyntax(target, message)
                    : this.SyntaxProvider.ApplyKickSyntax(target, message);
            }
            else if (sendraw)
            {
                e.Message = e.Message.Substring(SendPrefix.Length, e.Message.Length - SendPrefix.Length);
            }
            else
            {
                e.Message = this.SyntaxProvider.ApplyChatSyntax(e.Message);
            }
        }
Example #3
0
        private void OnQueueChatEx(QueueChatEvent e)
        {
            // Trim chars
            e.Message = this.TrimChars(e.Message);

            // There is no speed limit on commands
            var pm = e.Message.StartsWith("/pm ", StringComparison.OrdinalIgnoreCase);

            if (e.Message.StartsWith("/", StringComparison.OrdinalIgnoreCase) && !pm)
            {
                new ChatSendMessage(this.Truncate(e.Message, MaxMessageLength))
                .SendIn(this.BotBits);
                e.Cancelled = true;
                return;
            }

            // Queue the message and chop it into 140 char parts
            var prefix  = String.Empty;
            var message = e.Message;

            if (pm)
            {
                var args = e.Message.Split(' ');
                prefix  = String.Join(" ", args.Take(2)) + " ";
                message = String.Join(" ", args.Skip(2));
            }

            // Dont send the same thing more than 3 times
            var channel   = GetChannel(e.Message);
            var maxLength = MaxMessageLength - prefix.Length;

            while (this.CheckHistory(this.Truncate(message, maxLength), channel))
            {
                message = "." + message;
            }

            if (message.Length > maxLength)
            {
                new QueueChatEvent(prefix + this.Truncate(message, maxLength))
                .RaiseIn(this.BotBits);

                this.OnQueueChatEx(new QueueChatEvent(prefix + message.Substring(maxLength)));
            }
            else
            {
                e.Message = prefix + message;
            }
        }
Example #4
0
        private void OnAfterMost(QueueChatEvent e)
        {
            if (e.Cancelled)
            {
                return;
            }

            if (e.IsCommand && !e.IsPrivateMessage)
            {
                new ChatSendMessage(this.Truncate(e.Message))
                .SendIn(this.BotBits);
                return;
            }

            var prefix  = string.Empty;
            var message = e.Message;

            if (e.IsPrivateMessage)
            {
                var args = e.Message.Split(' ');
                prefix  = string.Join(" ", args.Take(2)) + " ";
                message = string.Join(" ", args.Skip(2));
            }
            var maxLength = MaxLength - prefix.Length;

            while (message.Length > 0)
            {
                var channel   = this.GetChannel(e.Message);
                var truncated = this.Truncate(message, maxLength);
                if (!Players.Of(this.BotBits).OwnPlayer.Owner&&
                    this.CheckHistory(truncated, channel))
                {
                    var bypass = '******';
                    if (truncated.All(c => c == bypass))
                    {
                        bypass = '******';
                    }
                    message   = bypass + message;
                    truncated = this.Truncate(message, maxLength);
                }

                this.QueueChat(prefix + truncated);
                message = message.Substring(truncated.Length);
            }
        }
Example #5
0
        private void OnAfterMost(QueueChatEvent e)
        {
            if (e.Cancelled)
            {
                return;
            }

            if (e.IsCommand && !e.IsPrivateMessage)
            {
                new ChatSendMessage(Truncate(e.Message))
                .SendIn(this.BotBits);
            }
            else
            {
                foreach (var msg in this.SplitMessage(e.Message, e.IsPrivateMessage))
                {
                    this.QueueChat(msg, e.IsPrivateMessage);
                }
            }
        }