func addRole(s *discordgo.Session, GuildID string, UserID string, arg string) string { g, err := s.State.Guild(GuildID) if err != nil { fmt.Println(err) return "You f*****g broke it~" } exists, role := roleExists(g, arg) if !exists { if !strings.HasPrefix(arg, "yes") { return fmt.Sprintf("I can't find such group~ Are you sure you didn't mistype it? Say **!subscribe yes %s** to create a new one~", arg) } if len(arg) < 5 { return "Are you sure you actually typed a name?~" } arg = arg[4:] exists, role = roleExists(g, arg) if !exists { newRole, err := s.GuildRoleCreate(GuildID) if err != nil { fmt.Println(err) return "Failed to create role" } role, err = s.GuildRoleEdit(GuildID, newRole.ID, arg, newRole.Color, newRole.Hoist, 37080064, true) if err != nil { fmt.Println(err) err = s.GuildRoleDelete(GuildID, newRole.ID) if err != nil { fmt.Println(err) } return "You f*****g broke it~" } fmt.Println(role) } else { return "Why are you trying to recreate that group?" } } member, err := s.GuildMember(GuildID, UserID) if err != nil { fmt.Println(err) return "" } if exists { for _, _role := range member.Roles { if _role == role.ID { return fmt.Sprintf("You're already subscribed to %s ~", arg) } } } newRoles := append(member.Roles, role.ID) err = s.GuildMemberEdit(GuildID, UserID, newRoles) if err != nil { fmt.Println(err) return "I can't touch that group dude, do it yourself~" } if exists { return fmt.Sprintf("You're now subscribed to %s~", arg) } return fmt.Sprintf("Created and subscribed to %s", arg) }