Make findInConversation() in messages repository return an object
Make findInConversationByAuthor() in messages repository return an object
Add IP and user agent parameters to newConversation()
Move methods from connections repository to botster class
Pass conversation id instead of object to checkCommand()
Move say() method to botster class and add conversation ID as parameter
Move say() method's SQL to messages repository
Change parameter of respond() from conversation object to ID
Move newConversation() from Conversation class to Botster class
Remove conversation class
Add and use entity base class
Move database queries from learnConnection() to connections repository
Make all factory and repository class names singular
Move checkCommand() database query into a repository
Move getResponse() database query into the connection repository
Move log related functionality from Botster class to a log repository and entity
Log when a connection is strengthened
Set conversation entity's new ID  in the connection repository create() method
Rename input repository getInput() to getWithId()
Return input entity in input repository getWithId()