@@ -604,3 +604,54 @@ func PopulateMailingListSheet() {
604604 externalMailingListEntries := GetExternalMailingListEntries ()
605605 populateMailingListSheet ("External" , externalMailingListEntries )
606606}
607+
608+ // UpdateTeamMembers checks the Team Members google sheet and gives the Team Member Discord role to all users with a TRUE cell
609+ func UpdateTeamMembers () {
610+ sheetName := "New Members"
611+ readRange := fmt .Sprintf ("'%s'!A:H" , sheetName )
612+ resp , err := SheetClient .Spreadsheets .Values .Get (config .TeamMemberMasterListSheetID , readRange ).Do ()
613+ if err != nil {
614+ utils .SugarLogger .Errorf ("Unable to read sheet: %v" , err )
615+ return
616+ }
617+
618+ var emails []string
619+ for i , row := range resp .Values {
620+ // Skip column names
621+ if i == 0 {
622+ continue
623+ }
624+
625+ // Skip rows that aren't filled until column H
626+ if len (row ) < 8 {
627+ continue
628+ }
629+
630+ // Check if column H is TRUE
631+ if hValue , ok := row [7 ].(string ); ok && hValue == "TRUE" {
632+ if email , ok := row [1 ].(string ); ok && email != "" {
633+ emails = append (emails , email )
634+ }
635+ }
636+ }
637+ count := 0
638+ for _ , email := range emails {
639+ user := GetUserByEmail (email )
640+
641+ if user .ID == "" {
642+ continue
643+ }
644+ if user .IsAlumni () || user .IsTeamMember () || ! user .IsMember () {
645+ continue
646+ }
647+ utils .SugarLogger .Infof ("Updating %s with Team Member role" , email )
648+ err := Discord .GuildMemberRoleAdd (config .DiscordGuild , user .ID , config .TeamMemberRoleID )
649+ if err != nil {
650+ utils .SugarLogger .Errorln ("Error adding role, " , err )
651+ continue
652+ }
653+ count ++
654+ }
655+ utils .SugarLogger .Infof ("Gave %d users the Team Member role" , count )
656+ SendMessage (config .DiscordLogChannel , fmt .Sprintf ("Gave %d users the Team Member role" , count ))
657+ }
0 commit comments