Events

August 1, 2026 · View on GitHub

Module: ovos_utils.events


EventContainer

Tracks message bus handlers registered by a skill or plugin, allowing clean unregistration on shutdown.

from ovos_utils.events import EventContainer

container = EventContainer(bus)

container.add("my.event", handler)
container.add("my.once", handler, once=True)

# Later:
container.remove("my.event")
container.clear()  # remove all

Methods

MethodDescription
set_bus(bus)Attach a message bus
add(name, handler, once=False)Register a handler. If once=True, automatically unregisters after first call
remove(name) → boolRemove all handlers for name. Returns True if any were found
clear()Unregister and clear all tracked handlers
__iter__Iterate over (name, handler) pairs

Note on remove(): Due to wrapper functions, bus.remove(name, handler) may not find the actual registered callable. EventContainer.remove() therefore calls bus.remove_all_listeners(name) to reliably clear all handlers for a given event name.


Handler Wrappers

create_wrapper(handler, skill_id, on_start, on_end, on_error)

Creates a wrapped handler for skill intent handlers. The wrapper:

  1. Calls unmunge_message(message, skill_id) to strip the skill ID prefix from intent entity keys
  2. Calls on_start(message) if provided
  3. Calls handler() or handler(message) depending on signature
  4. Calls on_error(e) or on_error(e, message) on exception
  5. Always calls on_end(message) in the finally block

create_basic_wrapper(handler, on_error)

Simpler wrapper that calls handler() or handler(message) and calls on_error(e) on exception. Used by EventSchedulerInterface for scheduled events.

unmunge_message(message, skill_id)

Strips the letterified skill ID prefix from intent entity keys in message.data. For example, key myskillMyentity becomes Myentity for skill my.skill.

get_handler_name(handler) → str

Returns a human-readable name for a handler function, including the owner object's name if available.


EventSchedulerInterface

Deprecated. Moved to ovos_bus_client.apis.events.EventSchedulerInterface.

Interface for scheduling events via the OVOS message bus scheduler. Emits mycroft.scheduler.* messages.

# Preferred import:
from ovos_bus_client.apis.events import EventSchedulerInterface

Methods

MethodDescription
schedule_event(handler, when, data, name, context)Schedule a one-time event
schedule_repeating_event(handler, when, interval, data, name, context)Schedule a repeating event
update_scheduled_event(name, data)Update event data
cancel_scheduled_event(name)Cancel a pending event
get_scheduled_event_status(name) → intSeconds until next trigger
cancel_all_repeating_events()Cancel all repeating events
shutdown()Cancel repeating events and clear all registered handlers

when may be a datetime, or a positive int/float representing seconds from now.


← FakeBus · Home · Utilities →