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.


The base Event class has the following attributes and methods:


  • user: A string containing the username of the user who wrote the message.

  • target: A string normally containing the name of the room or chat channel the message was sent in.

  • connector: A pointer to the opsdroid connector object which received the message.

  • linked_event: Another event linked to this one, for example the event that a Message replies to.

  • created: A timestamp of when this event was instantiated.

  • event_id: A unique identifier for this event as provided by the connector.

  • raw_event: The raw event received by the connector (may be None).

  • responded_to: A boolean (True/False) flag indicating if this event has already had its respond method called.

  • entities: A dictionary mapping of entities created by parsers. These could be values extracted form sentences like locations, times, people, etc.


  • respond(event): A method which takes another Event object responds using any attributes of the event which are not overridden in the response event. i.e. if the target attribute on the event argument is None then the target of the event being responded to will be used.


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.


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.


  • text: The textual content of the message.


  • respond(text): The same as the Event.respond method, with the addition of accepting a str argument, which will be converted into a Message event.


An event to represent a typing indication.


  • trigger: Trigger typing on or off.
  • timeout: Timeout on typing event.


A reaction to a message, normally an emoji or a string representing one.


  • emoji: The emoji to use as a reaction.


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.


  • url: The url of the file, can be None.
  • file_bytes: The file as a bytes object.


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.


  • url: The url of the file, can be None.
  • image_bytes: The image as a bytes object.