public void OnClanState(SteamFriends.ClanStateCallback callback) { if (callback.Events.Count == 0 && callback.Announcements.Count == 0) { return; } string groupName = callback.ClanName; string message; if (string.IsNullOrEmpty(groupName)) { groupName = Steam.Instance.Friends.GetClanName(callback.ClanID); // Check once more, because that can fail too if (string.IsNullOrEmpty(groupName)) { groupName = "Group"; Log.WriteError("IRC Proxy", "ClanID: {0} - no group name", callback.ClanID); } } foreach (var announcement in callback.Announcements) { message = string.Format("{0}{1}{2} announcement: {3}{4}{5} -{6} http://steamcommunity.com/gid/{7}/announcements/detail/{8}", Colors.OLIVE, groupName, Colors.NORMAL, Colors.GREEN, announcement.Headline, Colors.NORMAL, Colors.DARK_BLUE, callback.ClanID, announcement.ID ); IRC.SendMain(message); // Additionally send announcements to steamlug channel if (callback.ClanID.Equals(SteamLUG)) { IRC.SendSteamLUG(message); } Log.WriteInfo("Group Announcement", "{0} \"{1}\"", groupName, announcement.Headline); } foreach (var groupEvent in callback.Events) { if (groupEvent.JustPosted) { message = string.Format("{0}{1}{2} event: {3}{4}{5} -{6} http://steamcommunity.com/gid/{7}/events/{8} {9}({10})", Colors.OLIVE, groupName, Colors.NORMAL, Colors.GREEN, groupEvent.Headline, Colors.NORMAL, Colors.DARK_BLUE, callback.ClanID, groupEvent.ID, Colors.DARK_GRAY, groupEvent.EventTime.ToString() ); // Send events only to steamlug channel if (callback.ClanID.Equals(SteamLUG)) { IRC.SendSteamLUG(message); } else { IRC.SendMain(message); } Log.WriteInfo("Group Announcement", "{0} Event \"{1}\"", groupName, groupEvent.Headline); } } }