public void LogPrivateMessage(ChatMessage chatMessage, ulong receiver) { if (!Config.LogPrivateMessages) return; List<PrivateConversation> senderConversations = PrivateConversations.FindAll(c => c.Participants.Exists(p => p.SteamId == chatMessage.Sender.SteamId)); var pm = new PrivateMessage() { Sender = chatMessage.Sender.SteamId, Receiver = receiver, Date = chatMessage.Date, Text = chatMessage.Text }; if (senderConversations.Exists(c => c.Participants.Exists(p => p.SteamId == receiver))) { PrivateConversation conversation = senderConversations.Find(c => c.Participants.Exists(p => p.SteamId == receiver)); conversation.Messages.Add(pm); } else { List<IMyPlayer> players = new List<IMyPlayer>(); MyAPIGateway.Players.GetPlayers(players, p => p != null); var senderPlayer = players.FirstOrDefault(p => p.SteamUserId == chatMessage.Sender.SteamId); var receiverPlayer = players.FirstOrDefault(p => p.SteamUserId == receiver); PrivateConversations.Add(new PrivateConversation() { Participants = new List<Player>(new Player[] { new Player() { SteamId = senderPlayer.SteamUserId, PlayerName = senderPlayer.DisplayName }, new Player(){ SteamId = receiverPlayer.SteamUserId, PlayerName = receiverPlayer.DisplayName }}), Messages = new List<PrivateMessage>(new PrivateMessage[] { pm }) }); } }
public void LogPrivateMessage(ulong sender, ulong receiver, string message) { if (!Config.LogPrivateMessages) return; List<PrivateConversation> senderConversations = PrivateConversations.FindAll(c => c.Participants.Exists(p => p.SteamId == sender)); var pm = new PrivateMessage() { Sender = sender, Receiver = receiver, Date = DateTime.Now, Message = message }; if (senderConversations.Exists(c => c.Participants.Exists(p => p.SteamId == receiver))) { PrivateConversation conversation = senderConversations.Find(c => c.Participants.Exists(p => p.SteamId == receiver)); conversation.Messages.Add(pm); } else { List<IMyPlayer> players = new List<IMyPlayer>(); MyAPIGateway.Players.GetPlayers(players, p => p != null); var senderPlayer = players.FirstOrDefault(p => p.SteamUserId == sender); var receiverPlayer = players.FirstOrDefault(p => p.SteamUserId == receiver); PrivateConversations.Add(new PrivateConversation() { Participants = new List<Player>(new Player[] { new Player() { SteamId = senderPlayer.SteamUserId, PlayerName = senderPlayer.DisplayName }, new Player(){ SteamId = receiverPlayer.SteamUserId, PlayerName = receiverPlayer.DisplayName }}), Messages = new List<PrivateMessage>(new PrivateMessage[] { pm }) }); } //TODO save the log every 5 minutes }