任意のスケジュールと組み合わせたいという感じで使える。
package main import ( "fmt" "log" "os" "strings" "github.com/slack-go/slack" // slack-go/slack ライブラリをインポート ) func main() { // --- 設定値 (環境変数から取得することを推奨) --- // 例: // export SLACK_BOT_TOKEN="xoxb-your-valid-token" // export SLACK_USERGROUP_ID_TO_UPDATE="S0XXXXXXX" // 更新したいユーザーグループのID // export SLACK_NEW_USER_IDS="U0YYYYYYY,U0ZZZZZZZ" // 新しいメンバーのユーザーID (カンマ区切り) apiToken := os.Getenv("SLACK_BOT_TOKEN") userGroupID := os.Getenv("SLACK_USERGROUP_ID_TO_UPDATE") newUserIDsStr := os.Getenv("SLACK_NEW_USER_IDS") // カンマ区切りのユーザーID文字列 // 必須の環境変数が設定されているか確認 if apiToken == "" || userGroupID == "" || newUserIDsStr == "" { log.Fatal("エラー: 環境変数 SLACK_BOT_TOKEN, SLACK_USERGROUP_ID_TO_UPDATE, SLACK_NEW_USER_IDS を設定してください。") } // --- Slack APIクライアントの初期化 --- // slack.OptionDebug(true) をつけると、APIリクエスト/レスポンスの詳細なログが出力されます api := slack.New(apiToken, slack.OptionDebug(false)) // --- ユーザーグループメンバーの更新 --- // UpdateUserGroupMembersメソッドは、メンバーリストを「置き換える」動作をします。 // 第2引数には、新しいメンバーのユーザーIDをカンマ区切りで結合した文字列を渡します。 // 空のグループにしたい場合は、空文字列 "" を渡します。 log.Printf("ユーザーグループ %s のメンバーを更新します。新しいメンバー: [%s]\n", userGroupID, newUserIDsStr) // APIを呼び出してメンバーを更新 // 戻り値は更新後のユーザーグループ情報 updatedUserGroup, err := api.UpdateUserGroupMembers(userGroupID, newUserIDsStr) if err != nil { // エラー内容を確認しましょう (例: invalid_auth, usergroup_not_found, missing_scope など) log.Fatalf("ユーザーグループメンバーの更新に失敗しました: %v\n", err) } // --- 結果の表示 --- log.Printf("ユーザーグループ '%s' (%s) のメンバー更新に成功しました。\n", updatedUserGroup.Name, updatedUserGroup.ID) log.Printf("現在のメンバー数: %d\n", updatedUserGroup.UserCount) // (オプション) 更新後のメンバーリストをAPIで再取得して確認 currentMemberIDs, err := api.GetUserGroupMembers(userGroupID) if err != nil { log.Printf("警告: 更新後のメンバーリストの取得に失敗しました: %v\n", err) } else { log.Printf("現在のメンバーIDリスト: %v\n", currentMemberIDs) } } // --- 実行方法 --- // 1. `go get github.com/slack-go/slack` でライブラリをインストール // 2. 上記コードを `main.go` として保存 // 3. 環境変数を設定: // export SLACK_BOT_TOKEN="xoxb-your-valid-token" // export SLACK_USERGROUP_ID_TO_UPDATE="S0XXXXXXX" // export SLACK_NEW_USER_IDS="U0YYYYYYY,U0ZZZZZZZ" // 例: ユーザー2名にする場合 // export SLACK_NEW_USER_IDS="" // 例: グループを空にする場合 // 4. `go run main.go` で実行