Skip to content

Conversation

@sej3506
Copy link

@sej3506 sej3506 commented Feb 21, 2022

Problem

If there are over 1000 slack channels in an organization, which is
entirely possible with the ability to archive channels, the call method
in loads_slack_channels would only retrieve the first 1000.

Solution

This change adds a method to follow any pagination cursors and combine
channel list pages together to ensure we have a complete channel list.

This change also makes use of the exclude_archived argument for
conversations_list which will (on Slack's side) throw out any archived
channels. A snippet to keep in mind from Slack's docs:

"When paginating, any filters used in the request are applied after
retrieving a virtual page's limit. For example. using
exclude_archived=true when limit=20 on a virtual page that would contain
15 archived channels will return you the virtual page with only 5
results. Additional results are available from the next cursor
valuePaginate through slack channels."

@tuxagon
Copy link
Collaborator

tuxagon commented Feb 14, 2024

@sej3506 apologies for such a long time before anyone responded (mostly my fault). This project went through a whirlwind of initial changes based on some internal experimentation we were doing and the repo happened to be public for GitHub Actions. I didn't initially have the extra bandwidth to give the project support with external contributions and I let this fall through the cracks.

The two PRs you worked on are valuable; they simply became something I kept putting off responding to for much longer than I anticipated. If you're still interested in getting these merged, they'll need updated. I will ensure they get merged this time around. No worries if you're no longer interested.

sej3506 added 2 commits July 10, 2025 10:05
If there are over 1000 slack channels in an organization, which is
entirely possible with the ability to archive channels, the call method
in loads_slack_channels would only retrieve the first 1000.

This change adds a method to follow any pagination cursors and combine
channel list pages together to ensure we have a complete channel list.

This change also makes use of the exclude_archived argument for
conversations_list which will (on Slack's side) throw out any archived
channels. A snippet to keep in mind from Slack's docs:

https://api.slack.com/methods/conversations.list
"When paginating, any filters used in the request are applied after
retrieving a virtual page's limit. For example. using
exclude_archived=true when limit=20 on a virtual page that would contain
15 archived channels will return you the virtual page with only 5
results. Additional results are available from the next cursor
valuePaginate through slack channels."
Changing get_paged_chanels to take keyword args.
Updating the loads_slack_channels spec for testing pagination to include
the pagination cursor.
Including types when calling get_paged_channels (bug fix)
@sej3506 sej3506 force-pushed the add-channel-list-pagination branch from cee64d2 to cc59fa6 Compare July 10, 2025 14:09
@sej3506
Copy link
Author

sej3506 commented Jul 10, 2025

@tuxagon After 84 years, I've rebased and updated both. 😁

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants