Esempio n. 1
0
        protected virtual void HandleQueryNotice(object sender, IPrivateMessageEventArgs args, MessageFlags flags)
        {
            if (flags.HasFlag(MessageFlags.UserBanned))
            {
                return;
            }

            if (!string.Equals(args.SenderNickname, Config.GameMasterNickname, StringComparison.OrdinalIgnoreCase))
            {
                return;
            }

            Match decksInShoeMatch = DecksInShoeRegex.Match(args.Message);

            if (decksInShoeMatch.Success)
            {
                int decksInShoe;
                if (int.TryParse(
                        decksInShoeMatch.Groups["deckCount"].Value, NumberStyles.None, CultureInfo.InvariantCulture,
                        out decksInShoe
                        ))
                {
                    CardCounter.TotalDecks = decksInShoe;
                }
            }

            if (args.Message.Contains("Dealer stands on soft 17."))
            {
                State.BasicStrat = BasicStrategy.StandOnSoft17;
            }
            else if (args.Message.Contains("Dealer hits on soft 17."))
            {
                State.BasicStrat = BasicStrategy.HitOnSoft17;
            }
        }
Esempio n. 2
0
 private void HandleQueryAka([NotNull] CommandMatch cmd, [NotNull] IPrivateMessageEventArgs e)
 {
     ActuallyHandleChannelOrQueryAka(
         cmd, e,
         txt => ConnectionManager.SendQueryMessage(e.SenderNickname, txt)
         );
 }
Esempio n. 3
0
        protected virtual void HandleQueryMessage(object sender, IPrivateMessageEventArgs args, MessageFlags flags)
        {
            if (flags.HasFlag(MessageFlags.UserBanned))
            {
                return;
            }

            if (!string.Equals(args.SenderNickname, Config.GameMasterNickname, StringComparison.OrdinalIgnoreCase))
            {
                return;
            }

            JObject eventObject;

            try
            {
                eventObject = JObject.Parse(args.Message);
            }
            catch (JsonReaderException)
            {
                return;
            }

            Dispatcher.DispatchEvent(this, eventObject);
        }
Esempio n. 4
0
 private void HandleWDYTICommandInQuery(CommandMatch cmd, IPrivateMessageEventArgs msg)
 {
     HandleMessage(
         (string)cmd.Arguments[0],
         body => ConnectionManager.SendQueryMessage(msg.SenderNickname, body)
         );
 }
Esempio n. 5
0
 private void HandlePrivateMessage(object sender, IPrivateMessageEventArgs args, MessageFlags flags)
 {
     ActuallyHandleMessage(
         message => ConnectionManager.SendQueryMessage(args.SenderNickname, message),
         args,
         flags
         );
 }
Esempio n. 6
0
        protected virtual void HandleReloadCommand(CommandMatch cmd, IPrivateMessageEventArgs msg)
        {
            string username = VerifyIdentity(msg);

            if (username == null)
            {
                return;
            }

            ConnectionManager.ReloadConfiguration();
            ConnectionManager.SendQueryMessage(msg.SenderNickname, "OK");
        }
Esempio n. 7
0
        protected virtual void HandleQueryEntry(
            Dictionary <Command, List <PrivateMessageCommandHandler> > commandsHandlers, object sender,
            IPrivateMessageEventArgs msg, MessageFlags flags)
        {
            string line = msg.Message;

            if (Config.AllowWhitespaceBeforeCommandPrefix)
            {
                line = line.TrimStart();
            }
            if (!line.StartsWith(Config.CommandPrefix))
            {
                // not a command
                return;
            }
            string commandAndArgs = line.Substring(Config.CommandPrefix.Length);

            foreach (KeyValuePair <Command, List <PrivateMessageCommandHandler> > commandHandler in commandsHandlers)
            {
                // attempt to parse this command
                CommandMatch match = commandHandler.Key.Match(Config, commandAndArgs, flags);
                if (match == null)
                {
                    continue;
                }

                // check result of global callbacks
                if (!ApplyGlobalCallbacks(match, msg))
                {
                    continue;
                }

                // distribute
                foreach (PrivateMessageCommandHandler handler in commandHandler.Value)
                {
                    try
                    {
                        handler.Invoke(match, msg);
                    }
                    catch (Exception exc)
                    {
                        Logger.LogError(
                            "error when {Handler} was handling command {Command}: {Exception}",
                            handler, match.CommandName, exc
                            );
                    }
                }
            }
        }
Esempio n. 8
0
        protected virtual void HandleQueryMessage(object sender, IPrivateMessageEventArgs args, MessageFlags flags)
        {
            if (flags.HasFlag(MessageFlags.UserBanned))
            {
                return;
            }

            if (!string.Equals(args.SenderNickname, Config.GameMasterNickname, StringComparison.OrdinalIgnoreCase))
            {
                return;
            }

            var messageBody = args.Message;

            if (LinesLeftInMessage > 0)
            {
                // add this
                CurrentMessageJson.Append(messageBody);
                --LinesLeftInMessage;
            }
            else
            {
                var match = UnoBotFirstMessage.Match(messageBody);
                if (!match.Success)
                {
                    // nope
                    return;
                }

                LinesLeftInMessage = int.Parse(match.Groups[1].Value);
                CurrentMessageJson.Append(match.Groups[2].Value);
                --LinesLeftInMessage;
            }

            if (LinesLeftInMessage > 0)
            {
                // wait for more
                return;
            }

            // ready to parse
            var parseMe = CurrentMessageJson.ToString();

            CurrentMessageJson.Clear();

            var evt = JObject.Parse(parseMe);

            ProcessJsonEvent(evt);
        }
Esempio n. 9
0
        protected virtual void HandleInviteCommand(CommandMatch cmd, IPrivateMessageEventArgs e)
        {
            if (!Config.RejoinOnPrivateMessage)
            {
                return;
            }

            var channel = ((Match)cmd.Arguments[0]).Value;

            if (Config.AutoJoinedChannelsOnly && !ConnectionManager.AutoJoinChannels.Contains(channel))
            {
                return;
            }

            ConnectionManager.JoinChannel(channel);
        }
Esempio n. 10
0
        protected void HandleCasinoAssistCommand(CommandMatch cmd, IPrivateMessageEventArgs msg)
        {
            string registeredNick = ConnectionManager.RegisteredNameForNick(msg.SenderNickname) ?? msg.SenderNickname;

            lock (AssistPlayers)
            {
                if (cmd.CommandName == "nocasinoassist")
                {
                    AssistPlayers.Remove(registeredNick);
                }
                else
                {
                    AssistPlayers.Add(registeredNick);
                }
            }
        }
Esempio n. 11
0
        protected void HandleStratDebugCommand(CommandMatch cmd, IPrivateMessageEventArgs msg)
        {
            string registeredNick = ConnectionManager.RegisteredNameForNick(msg.SenderNickname) ?? msg.SenderNickname;

            lock (StrategyDebuggers)
            {
                if (cmd.CommandName == "nostratdebug")
                {
                    StrategyDebuggers.Remove(registeredNick);
                }
                else
                {
                    StrategyDebuggers.Add(registeredNick);
                }
            }
        }
Esempio n. 12
0
        protected virtual void HandleIKnowThatQueryCommand(CommandMatch cmd, IPrivateMessageEventArgs args)
        {
            string senderLower = (ConnectionManager.RegisteredNameForNick(args.SenderNickname) ?? args.SenderNickname)
                                 .ToLowerInvariant();
            string keywordLower = ((string)cmd.Arguments[0]).ToLowerInvariant();
            string message      = ((string)cmd.Arguments[1]).Trim();

            using (var ctx = GetNewContext())
            {
                IKnewThatEntry entry = ctx.Entries
                                       .FirstOrDefault(e => e.AuthorLowercase == senderLower && e.KeywordLowercase == keywordLower);

                if (entry == null)
                {
                    entry = new IKnewThatEntry
                    {
                        AuthorLowercase  = senderLower,
                        KeywordLowercase = keywordLower,
                        Timestamp        = DateTimeOffset.Now,
                        Message          = message
                    };
                    ctx.Entries.Add(entry);
                    ctx.SaveChanges();

                    ConnectionManager.SendQueryMessage(
                        args.SenderNickname,
                        $"Okay, remembering that on {entry.Timestamp:yyyy-MM-dd} at {entry.Timestamp:HH:mm:ss}, you knew the following: {entry.Message}"
                        );
                }
                else
                {
                    DateTimeOffset oldTimestamp = entry.Timestamp.ToLocalTime();
                    string         oldMessage   = entry.Message;

                    entry.Timestamp = DateTimeOffset.Now;
                    entry.Message   = message;
                    ctx.SaveChanges();

                    ConnectionManager.SendQueryMessage(
                        args.SenderNickname,
                        $"Okay, forgetting that on {oldTimestamp:yyyy-MM-dd} at {oldTimestamp:HH:mm:ss}, you knew the following: {oldMessage}; and remembering that on {entry.Timestamp:yyyy-MM-dd} at {entry.Timestamp:HH:mm:ss}, you knew the following: {entry.Message}"
                        );
                }
            }
        }
Esempio n. 13
0
        protected virtual void HandleSockpuppetCommand(CommandMatch cmd, IPrivateMessageEventArgs msg)
        {
            string username = VerifyIdentity(msg);

            if (username == null)
            {
                return;
            }

            var command = (string)cmd.Arguments[0];

            if (command.StartsWith(" "))
            {
                command = command.Substring(1);
            }

            PerformSockpuppet(username, msg.SenderNickname, command);
        }
Esempio n. 14
0
        protected virtual void HandleAlloStatsCommand(CommandMatch cmd, IPrivateMessageEventArgs msg)
        {
            string nick           = msg.SenderNickname;
            string registeredNick = ConnectionManager.RegisteredNameForNick(nick);

            if (registeredNick == null || !Config.Stewards.Contains(registeredNick))
            {
                // nope
                return;
            }

            string channel = ((Match)cmd.Arguments[0]).Value;

            if (!CooldownsPerChannel.ContainsKey(channel))
            {
                ConnectionManager.SendQueryMessageFormat(nick, "No cooldowns for {0}.", channel);
                return;
            }

            string testMessage = ((string)cmd.Arguments[1]).Trim();

            if (testMessage.Length == 0)
            {
                testMessage = null;
            }

            ConnectionManager.SendQueryMessageFormat(nick, "Allograph stats for {0}:", channel);
            var cooldowns = CooldownsPerChannel[channel];

            for (int i = 0; i < Config.Replacements.Count; ++i)
            {
                var replacement = Config.Replacements[i];
                var cooldown    = cooldowns[i];

                if (testMessage != null && !replacement.Regex.IsMatch(testMessage))
                {
                    // skip
                    continue;
                }

                ConnectionManager.SendQueryMessageFormat(nick, "{0} :::: {1}", replacement.RegexString, cooldown);
            }
            ConnectionManager.SendQueryMessage(nick, "End.");
        }
 protected virtual void OnQueryAction(IPrivateMessageEventArgs e)
 {
     HandleSharpIrcBotEvent(QueryActionSubscribers, e, "query action");
 }
Esempio n. 16
0
 protected virtual void HandleQueryNotice(object sender, IPrivateMessageEventArgs msg, MessageFlags flags)
 {
     HandleQueryEntry(QueryNoticeHandlers, sender, msg, flags);
 }
 protected virtual void OnQueryNotice(IPrivateMessageEventArgs e)
 {
     HandleSharpIrcBotEvent(QueryNoticeSubscribers, e, "query notice");
 }