protected virtual void HandleIKnewThatChannelCommand(CommandMatch cmd, IChannelMessageEventArgs args) { string senderLower = (ConnectionManager.RegisteredNameForNick(args.SenderNickname) ?? args.SenderNickname) .ToLowerInvariant(); string keywordLower = ((string)cmd.Arguments[0]).ToLowerInvariant(); using (var ctx = GetNewContext()) { IKnewThatEntry matchingEntry = ctx.Entries .FirstOrDefault(e => e.AuthorLowercase == senderLower && e.KeywordLowercase == keywordLower); if (matchingEntry == null) { ConnectionManager.SendChannelMessage( args.Channel, $"{args.SenderNickname}: No, you didn't!" ); return; } DateTimeOffset timestampLocal = matchingEntry.Timestamp.ToLocalTime(); ConnectionManager.SendChannelMessage( args.Channel, $"I confirm that on {timestampLocal:yyyy-MM-dd} at {timestampLocal:HH:mm:ss}, {args.SenderNickname} knew the following: {matchingEntry.Message}" ); ctx.Entries.Remove(matchingEntry); ctx.SaveChanges(); } }
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}" ); } } }