自分の所属しているワークスペースのチャンネル一覧(publicのみ)を取得する

const SLACK_OAUTH_TOKEN = process.env.SLACK_OAUTH_TOKEN; // 'xoxb- で始まる'
const USER_ID = process.env.USER_ID;
 
async function main() {
  let nextCursor = "";
  for (let i = 0; i < 1000; i++) {
    console.log(nextCursor);
 
    let url = `https://slack.com/api/conversations.list?exclude_archived=true&types=public_channel,private_channel&limit=100`;
    if (nextCursor !== "") {
      url += `&cursor=${nextCursor}`;
    }
 
    const resp = await fetch(url, {
      headers: {
        Authorization: `Bearer ${SLACK_OAUTH_TOKEN}`,
      },
    });
    const respBody = await resp.json();
 
    const channels = respBody.channels
      .filter((c) => c.creator === USER_ID)
      .map((c) => {
        return { id: c.id, name: c.name, creator: c.creator };
      });
    console.log(channels);
    nextCursor = respBody.response_metadata?.next_cursor;
    if (nextCursor == null || nextCursor === "") {
      break;
    }
 
    // avoid rate limit
    Bun.sleepSync(3000);
  }
}
 
await main();