Use .get() on dictionary properties

Previously, KeyErrors would be raised if `username` wasn't in the
`author` dictionary of the event. This uses the .get() method so that if
`username` isn't provided in `author`, it will return None and the fail
the conditional instead of raising a KeyError.

fixes #2