# Events Events in opsdroid represent things that happen on the services that opsdroid connects to. They are both sent and received by the connectors. All events are a subclass of the base `Event` class. Each event also defines its own set of attributes which are specific to that type of event. ### `Event` The base `Event` class has the following attributes and methods. ```eval_rst .. autoclass:: opsdroid.events.Event :members: ``` ### `OpsdroidStarted` The `OpsdroidStarted` event is triggered once Opsdroid's loader has completed. Skills can respond to this in order to perform startup actions which require connectors, databases, etc. to be available first. ```eval_rst .. autoclass:: opsdroid.events.OpsdroidStarted :members: :inherited-members: ``` ### `Message` The `Message` object is the most common event type, it represents textual events, and has the following attributes in addition to the base `Event` attributes. ```eval_rst .. autoclass:: opsdroid.events.Message :members: :inherited-members: ``` ### `Typing` An event to represent a typing indication. ```eval_rst .. autoclass:: opsdroid.events.Typing :members: :inherited-members: ``` ### `Reaction` A reaction to a message, normally an emoji or a string representing one. ```eval_rst .. autoclass:: opsdroid.events.Reaction :members: :inherited-members: ``` ### `File` A file event. All files should be representable as bytes. A `File` can be constructed using either a url or a `bytes` object, if a url is specified the `File.file_bytes` property will retrieve the url and store the response as `bytes`. ```eval_rst .. autoclass:: opsdroid.events.File :members: :inherited-members: ``` ### `Image` The `Image` event is a subclass of `File`, so in the same way `File` can an `Image` can be either a url or bytes, but should always be representable as `bytes`. ```eval_rst .. autoclass:: opsdroid.events.Image :members: :inherited-members: ```