Example #1
0
        private void ReplyToCommand(string message, bool notice)
        {
            switch (CommandType)
            {
            case ECommandType.IRC:
                var    isChannelMessage = IRC.IsRecipientChannel(Recipient);
                string recipient        = Recipient;

                if (isChannelMessage)
                {
                    if (!notice)
                    {
                        message = string.Format("{0}{1}{2}: {3}", Colors.LIGHTGRAY, SenderIdentity.Nickname, Colors.NORMAL, message);
                    }
                    else
                    {
                        recipient = SenderIdentity.Nickname.ToString();
                    }
                }
                else
                {
                    recipient = SenderIdentity.Nickname.ToString();
                }

                IRC.Instance.SendReply(recipient, message, notice);

                break;

            case ECommandType.SteamChatRoom:
                if (!Steam.Instance.Client.IsConnected)
                {
                    break;
                }

                Steam.Instance.Friends.SendChatRoomMessage(
                    ChatRoomID,
                    EChatEntryType.ChatMsg,
                    string.Format("{0}: {1}", Steam.Instance.Friends.GetFriendPersonaName(SenderID), Colors.StripColors(message))
                    );

                break;

            case ECommandType.SteamIndividual:
                if (!Steam.Instance.Client.IsConnected)
                {
                    break;
                }

                Steam.Instance.Friends.SendChatMessage(
                    SenderID,
                    EChatEntryType.ChatMsg,
                    Colors.StripColors(message)
                    );

                break;
            }
        }
Example #2
0
        public void OnMessage(CommandArguments command)
        {
            var matches = SteamLinkMatch.Matches(command.Message);

            foreach (Match match in matches)
            {
                var page = match.Groups["page"].Value;

                // Ignore sub pages, easier to do it here rather than in regex
                if (!string.IsNullOrEmpty(page))
                {
                    continue;
                }

                var    appType   = string.Empty;
                var    id        = uint.Parse(match.Groups["id"].Value);
                var    isPackage = match.Groups["type"].Value == "sub";
                string name;

                if (isPackage)
                {
                    name = Steam.GetPackageName(id);
                }
                else
                {
                    App data;

                    using (var db = Database.Get())
                    {
                        data = db.Query <App>("SELECT `AppID`, `Apps`.`Name`, `LastKnownName`, `AppsTypes`.`DisplayName` as `AppTypeString` FROM `Apps` JOIN `AppsTypes` ON `Apps`.`AppType` = `AppsTypes`.`AppType` WHERE `AppID` = @AppID", new { AppID = id }).SingleOrDefault();
                    }

                    if (data.AppID == 0)
                    {
                        continue;
                    }

                    name    = string.IsNullOrEmpty(data.LastKnownName) ? data.Name : data.LastKnownName;
                    name    = Utils.RemoveControlCharacters(name);
                    appType = data.AppTypeString;
                }

                if (command.Message.IndexOf(name, StringComparison.CurrentCultureIgnoreCase) >= 0)
                {
                    continue;
                }

                string priceInfo = isPackage ? string.Empty : GetFormattedPrices(id);

                if (command.CommandType == ECommandType.SteamChatRoom)
                {
                    Steam.Instance.Friends.SendChatRoomMessage(command.ChatRoomID, EChatEntryType.ChatMsg, string.Format("» {0} {1} — {2}{3}", isPackage ? "Package" : "App", id, Colors.StripColors(name), priceInfo));

                    continue;
                }

                IRC.Instance.SendReply(command.Recipient,
                                       string.Format("{0}» {1}{2} {3} —{4} {5}{6}{7}",
                                                     Colors.OLIVE,
                                                     Colors.NORMAL,
                                                     isPackage ? "Package" : appType,
                                                     id,
                                                     Colors.BLUE,
                                                     name,
                                                     Colors.LIGHTGRAY,
                                                     priceInfo
                                                     ),
                                       false
                                       );
            }
        }