私の場合は、課題管理アプリを作成しており、課題作成者、更新者が選択できるチャンネルを取得したい場面がありました。
結論から言うと、Slackの Conversations APIの users.conversationsを利用すると、ユーザがアクセスできる会話一覧を取得可能です。
こちらをslack-goで書くと以下のようになります。
// SLACK_USER_AUTH_TOKENには、OAuth Access Tokenを指定する import ( "os" slack "github.com/slack-go/slack" ) // GetChannels : 課題担当者の所属するチャンネル情報を取得 func GetChannels(userID string) ([]slack.Channel, error) { // ユーザの所属するチャンネル情報を取得するのに利用 userAuthAPI := slack.New(os.Getenv("SLACK_USER_AUTH_TOKEN")) conversationParams := slack.GetConversationsForUserParameters{ UserID: userID, Cursor: "", // DM、グループDMも取得したい場合は、im,mpimも設定してください Types: []string{ "public_channel", "private_channel", }, Limit: 100, ExcludeArchived: false, } channels, _, err := userAuthAPI.GetConversationsForUser(&conversationParams) if err != nil { return nil, err } return channels, nil }Slack側の設定も必要です。OAuth & Permissionsに遷移し、User Token Scopesを設定してください。
※必要に応じて、im:read,mpim:readも設定してください。
私が作成したSlack課題管理Appはこちらです。
参考になる箇所があれば幸いです。