<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def add_listener(self, callback, event_type=None):
 """ Add a listener that will send a callback when the client recieves an event. Args: callback (func(roomchunk)):
 Callback called when an event arrives. event_type (str):
 The event_type to filter for. Returns: uuid.UUID: Unique id of the listener, can be used to identify the listener. """

        listener_uid = uuid4()
        # TODO: listeners should be stored in dict and accessed/deleted directly. Add
        # convenience method such that MatrixClient.listeners.new(Listener(...)) performs
        # MatrixClient.listeners[uuid4()] = Listener(...)
        self.listeners.append(
            {
                'uid': listener_uid,
                'callback': callback,
                'event_type': event_type
            }
        )
        return listener_uid