Skip to content

feat: add authorship arguments to say_stream#1502

Open
zimeg wants to merge 3 commits into
mainfrom
add-authorship-args-to-say-stream
Open

feat: add authorship arguments to say_stream#1502
zimeg wants to merge 3 commits into
mainfrom
add-authorship-args-to-say-stream

Conversation

@zimeg
Copy link
Copy Markdown
Member

@zimeg zimeg commented May 19, 2026

Summary

This PR adds icon_emoji, icon_url, and username authorship arguments to SayStream, AsyncSayStream, SetStatus, and AsyncSetStatus helpers to match the new authorship support added in slack_sdk v3.42.0 🚀

Testing

@app.event("assistant_thread_started")
def handle_thread(say_stream, set_status):
    set_status(
        status="thinking...",
        icon_emoji=":maple_leaf:",
        username="Charlie Brown",
    )
    stream = say_stream(icon_emoji=":maple_leaf:", username="Charlie Brown")
    stream.append(markdown_text="Dancing with snoopy dog!")
    stream.stop()

Category

  • slack_bolt.App and/or its core components
  • slack_bolt.async_app.AsyncApp and/or its core components

Requirements

  • I've read and understood the Contributing Guidelines and have done my best effort to follow them.
  • I've read and agree to the Code of Conduct.
  • I've run ./scripts/install_all_and_run_tests.sh after making the changes.

zimeg and others added 2 commits May 18, 2026 21:06
The SDK now includes icon_emoji, icon_url, and username in
ChatStream._stream_args. Update assertions to expect these keys.

Co-Authored-By: Claude <svc-devxp-claude@slack-corp.com>
Add icon_emoji, icon_url, and username parameters to say_stream()
call, matching the new authorship support in slack_sdk v3.42.0.

Co-Authored-By: Claude <svc-devxp-claude@slack-corp.com>
@zimeg zimeg added enhancement New feature or request area:async area:sync labels May 19, 2026
@codecov
Copy link
Copy Markdown

codecov Bot commented May 19, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 91.30%. Comparing base (3319330) to head (2e6e1f7).
✅ All tests successful. No failed tests found.

Additional details and impacted files
@@           Coverage Diff           @@
##             main    #1502   +/-   ##
=======================================
  Coverage   91.30%   91.30%           
=======================================
  Files         228      228           
  Lines        7271     7271           
=======================================
  Hits         6639     6639           
  Misses        632      632           

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

Add icon_emoji, icon_url, and username parameters to set_status(),
matching the new authorship support in slack_sdk v3.42.0.

Co-Authored-By: Claude <svc-devxp-claude@slack-corp.com>
@zimeg zimeg self-assigned this May 19, 2026
@zimeg zimeg marked this pull request as ready for review May 19, 2026 04:31
@zimeg zimeg requested a review from a team as a code owner May 19, 2026 04:31
@zimeg zimeg added this to the 1.29.0 milestone May 19, 2026
@zimeg
Copy link
Copy Markdown
Member Author

zimeg commented May 19, 2026

⚡ Similar changes might not be needed in Bolt JS with the subtracted arguments:

https://github.com/slackapi/bolt-js/blob/ba4deb6a8b39da43cef0452d7541bcfcc3f3527a/src/context/create-say-stream.ts#L5

Copy link
Copy Markdown
Contributor

@WilliamBergamin WilliamBergamin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks good 💯

I think I overlooked the assert statements in the original contribution for this, asserting against internal fields can lead to issues, we don't want this to become a pattern in the project 😅

We might want to set up a "mock server" make a request to it using say_stream and capture the arguments 🤔 there might also be a simpler way to do this as well

Comment on lines 40 to +49
assert stream._buffer_size == self.default_chat_stream_buffer_size
assert stream._stream_args == {
"channel": "C111",
"thread_ts": "111.222",
"recipient_team_id": "T111",
"recipient_user_id": "U111",
"task_display_mode": None,
"icon_emoji": None,
"icon_url": None,
"username": None,
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think I overlooked how these asserts are expecting internal arguments, if you find a better solution to please contribute it 🙏 We don't want this to become a pattern in the project 😅

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We might need to set up a mock web server and capture the request sent to it 🤔

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants