Allow pipeline handlers to send messages too #157
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The previous approach assumed responses would only be generated by the target handler, not the intermediate pipeline. This meant that reactions or other cross-cutting messages sent by other stages in the pipeline would be missed by the sender, since it wrapped only around the target handler in the pipeline.
We now wrap around the outermost handler too, and the sending handler (which will have two instances running now) only sends unsent messages it sees (since the innermost will have sent the ones generated by the target).
Obviously, this means that the placement of the UseConversation handler is relevant since it persists responses which have a message ID, which will only be the case for messages that reach it after the target and its innermost sender. Pipeline-generated messages that run before the conversation one will therefore not be saved (as expected) but will still be sent out by the outermost handler.