Skip to content

Commit c42d80f

Browse files
Merge pull request #52 from Gaucho-Racing/austin/team-member-role
Austin/team member role fuck it we ball
2 parents be8020e + 60c5c10 commit c42d80f

10 files changed

Lines changed: 84 additions & 8 deletions

File tree

commands/handler.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -159,8 +159,8 @@ func OnGuildMemberUpdate(s *discordgo.Session, m *discordgo.GuildMemberUpdate) {
159159
utils.SugarLogger.Infof("Removed all subteam roles from user %s (%s) as they are alumni", m.User.ID, m.Nick)
160160
service.SendMessage(config.DiscordLogChannel, fmt.Sprintf("Removed all subteam roles from user %s (%s) as they are alumni", m.User.ID, m.Nick))
161161

162-
// User cannot have member, lead, or officer roles if they are alumni (admin and special advisor ok)
163-
removeRoles := []string{config.MemberRoleID, config.LeadRoleID, config.OfficerRoleID}
162+
// User cannot have member, team member, lead, or officer roles if they are alumni (admin and special advisor ok)
163+
removeRoles := []string{config.MemberRoleID, config.TeamMemberRoleID, config.LeadRoleID, config.OfficerRoleID}
164164
for _, role := range removeRoles {
165165
err := service.Discord.GuildMemberRoleRemove(config.DiscordGuild, m.User.ID, role)
166166
if err != nil {

commands/users.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ func Users(args []string, s *discordgo.Session, m *discordgo.MessageCreate) {
3939
officerMembers := 0
4040
specialAdvisorMembers := 0
4141
alumniMembers := 0
42+
teamMembers := 0
4243

4344
subteamMap := make(map[string]int)
4445
subteams := service.GetAllSubteams()
@@ -63,6 +64,9 @@ func Users(args []string, s *discordgo.Session, m *discordgo.MessageCreate) {
6364
if role == config.AlumniRoleID {
6465
alumniMembers++
6566
}
67+
if role == config.TeamMemberRoleID {
68+
teamMembers++
69+
}
6670
for _, subteam := range subteams {
6771
if role == subteam.ID {
6872
subteamMap[subteam.Name]++
@@ -71,10 +75,11 @@ func Users(args []string, s *discordgo.Session, m *discordgo.MessageCreate) {
7175
}
7276
guildMembers++
7377
}
74-
messageText := fmt.Sprintf("Discord Members: %d\nMembers Role: %d\nAlumni Members: %d\n", guildMembers, memberMembers, alumniMembers)
78+
messageText := fmt.Sprintf("Discord Members: %d\nMembers Role: %d\nAlumni Members: %d\nTeam Members: %d\n\n", guildMembers, memberMembers, alumniMembers, teamMembers)
7579
utils.SugarLogger.Infof("Discord Members: %d", guildMembers)
7680
utils.SugarLogger.Infof("Members Role: %d", memberMembers)
7781
utils.SugarLogger.Infof("Alumni Members: %d", alumniMembers)
82+
utils.SugarLogger.Infof("Team Members: %d", teamMembers)
7883
for subteam, count := range subteamMap {
7984
utils.SugarLogger.Infof("%s: %d", subteam, count)
8085
messageText += fmt.Sprintf("%s: %d\n", subteam, count)

config/config.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import (
55
"os"
66
)
77

8-
var Version = "4.5.8"
8+
var Version = "4.5.9"
99
var Env = os.Getenv("ENV")
1010
var Port = os.Getenv("PORT")
1111
var Prefix = os.Getenv("PREFIX")
@@ -35,7 +35,8 @@ var AdminRoleID = "1030681203864522823"
3535
var OfficerRoleID = "812948550819905546"
3636
var LeadRoleID = "970423652791246888"
3737
var SpecialAdvisorRoleID = "1386909324596609034"
38-
var MemberRoleID = "1334383074410237984"
38+
var TeamMemberRoleID = "1456575818460430522"
39+
var MemberRoleID = "1334383074410237984" // this is actually the Discord Role ID for "verified" role
3940
var AlumniRoleID = "817577502968512552"
4041
var BotRoleID = "1229611357259694132"
4142

@@ -49,6 +50,7 @@ var RsaPrivateKeyString = os.Getenv("RSA_PRIVATE_KEY")
4950

5051
var MemberDirectorySheetID = "1reuLZox2daj8r2H-lZrwB4oFPYlJ6oC7983UUaZd6AY"
5152
var MailingListSheetID = "1O5KQzpOo9Ja4Vg55TGCyc3uUDZFvHjyhZqw4Eh1SKVY"
53+
var TeamMemberMasterListSheetID = "1tKawKKq1jk-WN8WM8gGkwOeEc0IA6-pkKxHL1DcWzd0"
5254

5355
var DriveCron = os.Getenv("DRIVE_CRON")
5456
var GithubCron = os.Getenv("GITHUB_CRON")

jobs/drive.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ func RegisterDriveCronJob() {
2020
_, _ = service.Discord.ChannelMessageSend(config.DiscordLogChannel, ":alarm_clock: Starting google drive CRON Job")
2121
utils.SugarLogger.Infoln("Starting google drive CRON Job...")
2222
var wg sync.WaitGroup
23-
wg.Add(5)
23+
wg.Add(6)
2424
go func() {
2525
defer wg.Done()
2626
service.PopulateMemberDirectorySheet()
@@ -41,6 +41,10 @@ func RegisterDriveCronJob() {
4141
defer wg.Done()
4242
service.CleanLeadsDriveMembers()
4343
}()
44+
go func() {
45+
defer wg.Done()
46+
service.UpdateTeamMembers()
47+
}()
4448
wg.Wait()
4549
// utils.SugarLogger.Infoln("Finished google drive cleanup, running PopulateDriveMembers...")
4650
// _, _ = service.Discord.ChannelMessageSend(config.DiscordLogChannel, "Finished google drive cleanup, running PopulateDriveMembers...")

jobs/github.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import (
99
cron "github.com/robfig/cron/v3"
1010
)
1111

12-
func RegisteGithubCronJob() {
12+
func RegisterGithubCronJob() {
1313
if config.Env != "PROD" {
1414
utils.SugarLogger.Infoln("Github CRON Job not registered because environment is not PROD")
1515
return

main.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ func main() {
2626
commands.InitializeDiscordBot()
2727

2828
jobs.RegisterDriveCronJob()
29-
jobs.RegisteGithubCronJob()
29+
jobs.RegisterGithubCronJob()
3030
jobs.RegisterDiscordCronJob()
3131

3232
router := controller.SetupRouter()

model/user.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,9 @@ func (user User) GetHighestRole() string {
5858
if user.IsSpecialAdvisor() {
5959
return "d_special_advisor"
6060
}
61+
if user.IsTeamMember() {
62+
return "d_team_member"
63+
}
6164
if user.IsMember() {
6265
return "d_member"
6366
}
@@ -96,6 +99,10 @@ func (user User) IsInnerCircle() bool {
9699
return user.IsAdmin() || user.IsOfficer() || user.IsLead() || user.IsSpecialAdvisor()
97100
}
98101

102+
func (user User) IsTeamMember() bool {
103+
return user.HasRole("d_team_member")
104+
}
105+
99106
func (user User) IsMember() bool {
100107
return user.HasRole("d_member")
101108
}

service/discord_service.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -405,6 +405,11 @@ func PopulateDiscordMembers() {
405405
if err != nil {
406406
utils.SugarLogger.Errorf("Error adding role to user %s: %s", user.Email, err.Error())
407407
}
408+
} else if user.HasRole("d_team_member") {
409+
err := Discord.GuildMemberRoleAdd(config.DiscordGuild, user.ID, config.TeamMemberRoleID)
410+
if err != nil {
411+
utils.SugarLogger.Errorf("Error adding role to user %s: %s", user.Email, err.Error())
412+
}
408413
} else if user.HasRole("d_officer") {
409414
err := Discord.GuildMemberRoleAdd(config.DiscordGuild, user.ID, config.OfficerRoleID)
410415
if err != nil {

service/drive_service.go

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
}

service/role_service.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,8 @@ func SyncDiscordRolesForUser(userID string, roleIds []string) {
8484
roles = append(roles, "d_lead")
8585
} else if id == config.SpecialAdvisorRoleID {
8686
roles = append(roles, "d_special_advisor")
87+
} else if id == config.TeamMemberRoleID {
88+
roles = append(roles, "d_team_member")
8789
} else if id == config.MemberRoleID {
8890
roles = append(roles, "d_member")
8991
} else if id == config.AlumniRoleID {

0 commit comments

Comments
 (0)