Channel activity (messages, actions, nick changes, joins, parts) should be logged to an external data source.
When a user sends a message to a channel of the format 'seen %' where % is a user nick, the bot will send a message to that channel containing the last logged instance of an action, nick change, joins, or parts associated with that user.
When a user sends a message to a channel of the format 'heard %' where % is a user nick, the bot will send the last message sent to that channel by that user to that channel.
When a user sends a message directly to the bot of the format 'search %' where % is any string, the bot will perform a search of all logged data in the database for that string and send a reply message to that user for each result found indicating the associated channel, user, and content of the result.