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; } }
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 ); } }