Exemple #1
0
        private void Receieved(NewMessage message)
        {
            Console.WriteLine("Got message " + message.channel + " : " + message.text);

            var request = new Request {
                message = message.text,
                from = _client.UserLookup[message.user].name,
                channel = message.channel
            };

            foreach ( var responder in Responders )
            {
                if (responder.Matched(request))
                {
                    var runner = responder.Create(request, RunnerOutput);
                    if ( !runner.IsFinished())
                        runners.Add(runner);
                    return;
                }
            }

            _client.SendMessage(SendMessage, message.channel, "You said : " + message.text);
        }
        private void OnMessageReceived(NewMessage message)
        {
            if (message.type == "message")
              {
            this.Logger.Debug($"Received => Type: {message.type} - SubType: {message.subtype} - Channel: {this.GetReadableName(message.channel)} - Raw: {this.GetRawMessage(message)}");

            if (this.IsRegularMessage(message) && this.ShouldMonitor(message.channel))
            {
              this.channelsInfo[message.channel].UnreadMessage++;
              if (this.Client.ChannelLookup.ContainsKey(message.channel) || this.Client.GroupLookup.ContainsKey(message.channel))
              {
            this.channelsInfo[message.channel].UnreadMention += Convert.ToInt32(this.HasMention(this.GetRawMessage(message)));
              }
              else
              {
            this.channelsInfo[message.channel].UnreadMention++;
              }

              this.UpdateStatus();
            }
            else
            {
              this.Logger.Debug("Message dropped");
            }
              }
        }
 private bool IsRegularMessage(NewMessage message)
 {
     return this.IsRegularMessage(message.user, message.subtype);
 }
        private void OnMessageReceived(SlackAPI.WebSocketMessages.NewMessage message)
        {
            if (!string.IsNullOrEmpty(message.user) && message.user != client.MySelf.id)
            {
                string messageText = SanitizeText(message.text);

                //Admin control
                if (message.user == adminId && message.channel == adminDM)
                {
                    if (message.text[0] == '{')
                    {
                        pendingQuestionId = RecordQuestion(message.text);
                        PostMessage(adminId, "Here's what you sent me:");
                        PostQuestion(pendingQuestionId, adminId);
                        PostMessage(adminId, "Want me to post this? Say 'yes post' or 'no post'.");
                    }
                    else if (messageText == "yes post")
                    {
                        if (pendingQuestionId != Guid.Empty)
                        {
                            PostQuestion(pendingQuestionId, triviaChannelId);
                            pendingQuestionId = Guid.Empty;
                        }
                        else
                        {
                            PostMessage(adminId, "Something went wrong! Red alert!");
                            PostMessage(adminId, "Error in admin control");
                        }
                    }
                    else if (messageText == "no post")
                    {
                        pendingQuestionId = Guid.Empty;
                        PostMessage(adminId, "Okay, I won't post it.");
                    }
                    else if (messageText == "score")
                    {
                        PostMessage(adminId, CheckAllScores());
                    }
                    else if (messageText.Contains("delete previous"))
                    {
                        Console.WriteLine("You haven't set up functionality for this yet.");
                    }
                    else if (messageText == "end")
                    {
                        PostMessage(adminDM, "Here's what I'll say to end the round: ");
                        PostMessage(adminDM, EndRound());
                        PostMessage(adminDM, "Want me to end round? Say 'yes end' or 'no end'.");
                    }
                    else if (messageText == "yes end")
                    {
                        PostMessage(triviaChannelId, EndRound());
                    }
                    else if (messageText == "no end")
                    {
                        PostMessage(adminDM, "Trivia bot no end.");
                    }
                    else if (messageText.Contains("history"))
                    {
                        GetMessageHistory();
                    }
                    else if (messageText == "test")
                    {
                        PostMessage(message.channel, "Test passed!");
                    }
                    else if (messageText == "delete history 8675309")
                    {
                        DeleteHistory();
                    }
                    else if (message.text.Contains("delete player attempt"))
                    {
                        // Needs to follow pattern: 'delete player attempt @slackmention'
                        PostMessage(adminDM, message.text);
                        DeleteMostRecentPlayerAttempt(message.text);
                    }
                    else if (messageText == "delete last question 8675309")
                    {
                        DeleteMostRecentQuestion();
                    }
                    else if (messageText.Split(" ")[0] == "tell")
                    {
                        Ventriloquist(message.text);
                    }
                    else if (messageText.Contains("add attempt for"))
                    {
                        PostMessage(adminDM, ManuallyAddAttempts(message.text));
                    }
                    else if (messageText == "help")
                    {
                        var helpMessage = "Hey Connor, here's what you can tell me:\n" +
                                          "Send me a question using json format.\n" +
                                          "Delete all attempts by saying 'delete attempts 8675309'.\n" +
                                          "Delete a player's last attempt by saying 'delete history attempt @[slackmention]'.\n" +
                                          "Delete the most recent question by saying 'delete last question 8675309'.\n" +
                                          "Make me send a DM to a user by saying 'tell user @[slackmention] [Here's the sentence I want to send]'.\n" +
                                          "Add attempts for a player by saying 'add attempt for @[slackmention] [letter]'.\n" +
                                          "Get current score in trivia channel by saying 'current score'.\n" +
                                          "Get current score in this channel by saying 'score'.\n";
                        PostMessage(adminDM, helpMessage);
                    }
                    else
                    {
                        PostMessage(adminDM, Converse(message.user, messageText));
                    }
                }
                //For all other users
                else if (message.channel == triviaChannelId && message.user == adminId)
                {
                    if (messageText == "current score")
                    {
                        PostMessage(triviaChannelId, CheckAllScores());
                    }
                }
                else if (message.channel != triviaChannelId)
                {
                    if (LookUpPlayer(message.user) == null)
                    {
                        if (CreatePlayer(message.user, message.channel) == null)
                        {
                            PostMessage(message.user, "Something went wrong! I tried to add you but it looks like you're a demon.");
                            PostMessage(adminId, "Something went wrong! Red alert!");
                            PostMessage(adminId, "Error in createplayer");
                        }
                    }
                    var responseToCheck = CheckForAndAddDM(message.user, message.channel);
                    if (responseToCheck != "DM exists")
                    {
                        PostMessage(adminId, responseToCheck);
                    }
                    if (messageText.Contains("help"))
                    {
                        PostMessage(message.user,
                                    "Need help?\n" +
                                    "When I post a question, send me a direct message with the letter of the answer that you think is correct.\n" +
                                    "If you'd like to check your current score, send me a direct message and say 'score'."
                                    );
                    }
                    else if (messageText == "score")
                    {
                        PostMessage(message.channel, "Getting your score...");
                        PostMessage(message.channel, "Your current score is " + CheckPlayerScores(message.user) + "!");
                    }
                    else if (messageText == "a" || messageText == "b" || messageText == "c" || messageText == "d")
                    {
                        PostMessage(message.channel, RecordAnswer(message, messageText));
                    }

                    else
                    {
                        PostMessage(message.channel, Converse(message.user, messageText));
                    }
                }
                if (message.user != adminId)
                {
                    if (message.channel != "C6ZPBU15W")
                    {
                        var speakingPlayer = LookUpPlayer(message.user);
                        PostMessage(adminId, "*Message received from " + speakingPlayer.PlayerName + ":* " + messageText);
                    }
                }
            }
        }
Exemple #5
0
        void Client_OnMessageReceived(NewMessage obj)
        {
            if (obj.channel.Equals(Id))
                BeginInvoke(new Action(() =>
                {
                    AddMessage(new SlackAPI.Message()
                    {
                        text = obj.text,
                        user = obj.user,
                        ts = obj.ts
                    });

                    //if (((chatContent.VerticalScroll.Value + 1) * 1f / chatContent.VerticalScroll.Maximum * 1f) > .9f)
                    //    chatContent.VerticalScroll.Value = chatContent.VerticalScroll.Maximum;
                }));
        }
Exemple #6
0
        /// <summary>
        ///     Processes the message sent to the bot and runs the command if it's valid.
        /// </summary>
        /// <param name="msg"></param>
        private void ParseBotMessage(NewMessage msg)
        {
            string text = msg.text.ToLower().Trim();
            var words = text.Split(new char[] {' '}, StringSplitOptions.RemoveEmptyEntries);
            string command = "";

            if (words.Any())
            {
                command = words[0];
                string userId = "<@" + _loginResponse.self.id.ToLower() + ">";
                command = command.Replace(userId + ":", "");
                command = command.Replace(userId, "");

                if (command.Length == 0)
                    words = words.Skip(1).ToArray();

                if (words.Any())
                    command = words[0];
            }

            command = command.Trim();

            string[] args = null;
            if (words.Count() > 1)
                args = words.Skip(1).ToArray();

            string targetUser = "******" + msg.user + ">";
            string answer = targetUser + ": ";

            if (_restaurantManager.ContainsRestaurant(command))
            {
                answer += _restaurantManager.GetMenu(command);
            }
            else if (IsCommandKnown(command))
            {
                answer += RunCommand(command, args);
            }
            else
            {
                StatisticsCollector.GetInstance().IncrementUnknownCommandCount();
                answer = GetRandomUnknownCommandAnswer(targetUser);
            }

            if (answer.Length > 0)
                _slackClient.SendMessage(received => { }, msg.channel, answer);
        }
Exemple #7
0
        private void OnSlackMessageReceived(NewMessage obj)
        {
            if (!IsMessageForMe(obj))
                return;

            StatisticsCollector.GetInstance().IncrementIncomingMessageCount();

            // Find sender user name
            string senderName = "<unknown>";
            foreach (User user in _loginResponse.users)
            {
                if (user.id == obj.user)
                {
                    senderName = user.name;
                    break;
                }
            }

            _log.Info("Incoming message from " + senderName + " for me: " + obj.text);

            ParseBotMessage(obj);
        }
Exemple #8
0
        /// <summary>
        ///     Checks if the message is addressed to the bot.
        /// </summary>
        /// <param name="msg"></param>
        /// <returns></returns>
        private bool IsMessageForMe(NewMessage msg)
        {
            // Check if the message is directly for me
            if (msg.channel.StartsWith("D") && msg.user != _loginResponse.self.id)
                return true;

            // Check if the message begins with my user ID
            var re = new Regex(@"^\<@(.*)\>(.*)$");
            Match m = re.Match(msg.text);
            return (m.Success && m.Groups[1].Value == _loginResponse.self.id);
        }