diff options
| author | Nathan Perry <avaglir@gmail.com> | 2017-07-27 21:54:59 -0400 |
|---|---|---|
| committer | Nathan Perry <avaglir@gmail.com> | 2017-07-27 21:54:59 -0400 |
| commit | 54359c61daadf1d61730d224675c3b4595a5b83a (patch) | |
| tree | 7fdf2e0aeafa399a208a75b6ee43c1e9fe6aa066 | |
| parent | c8f28679d10b3004fb7f04f54e625284c93e0c70 (diff) | |
some more updates
| -rw-r--r-- | cmd/main.go | 2 | ||||
| -rw-r--r-- | thulani.go | 56 | ||||
| -rw-r--r-- | util.go | 13 |
3 files changed, 39 insertions, 32 deletions
diff --git a/cmd/main.go b/cmd/main.go index a0c429b..2219caf 100644 --- a/cmd/main.go +++ b/cmd/main.go @@ -7,7 +7,7 @@ import ( ) func main() { - conf, err := thulani.LoadConfig("config.yml") + conf, err := thulani.LoadConfig("config.json") if err != nil { log.Fatal(err) } @@ -36,11 +36,6 @@ func Run(conf *Config) { func onReady(s *discordgo.Session, m *discordgo.Ready) { log.Infof("Logged in as %v (%v)", m.User.Username, m.User.ID) - _, err := s.UserUpdate("", "", "thulani", "https://cdn.discordapp.com/attachments/90548758458167296/338518035256311809/todd.png", "") - if err != nil { - log.Errorf("error updating user: %v", err) - } - s.UpdateStatus(0, "literally nothing") joined := false @@ -60,23 +55,31 @@ func onGuildCreate(s *discordgo.Session, m *discordgo.GuildCreate) { member, err := s.GuildMember(m.Guild.ID, s.State.User.ID) if err != nil { log.Warningf("joined guild %v but was unable to get member id: %q", m.Name, err) + log.Notice("please reconnect to guild: %v", oauthUrl()) + s.GuildLeave(m.Guild.ID) + return } + log.Infof("joined guild %v", m.Name) + + perms := 0 for _, role := range m.Roles { for _, mRole := range member.Roles { if role.ID == mRole { - log.Infof("joined guild %v with role: %v (%v)", m.Name, role.Name, role.ID) + perms |= role.Permissions - if role.Permissions&requestedPerms != requestedPerms { - log.Errorf("server didn't grant us the desired permissions.") - s.GuildLeave(m.Guild.ID) - log.Warningf("Don't disable any permissions or thulani will be a little sponge man! Click here to die: %v", oauthUrl()) - return - } + log.Infof("discovered role: %v (%v)", role.Name, role.ID) } } } + if perms&requestedPerms != requestedPerms { + log.Errorf("server didn't grant us the desired permissions.") + s.GuildLeave(m.Guild.ID) + log.Warningf("Don't disable any permissions or thulani will be a little sponge man! Click here to die: %v", oauthUrl()) + return + } + err = s.GuildMemberNickname(m.Guild.ID, "@me", "newlani") if err != nil { log.Warningf("unable to update nickname: %q", err) @@ -115,20 +118,28 @@ func onMessage(s *discordgo.Session, m *discordgo.MessageCreate) { return } - _ = func() bool { - for _, v := range ctx.Member.Roles { - if v == config.OpRole { - return true + fn, ok := cmdMap[strings.ToLower(ctx.Command)] + if ok { + authorized := false + + for _, role := range ctx.Guild.Roles { + for _, v := range ctx.Member.Roles { + if v != role.Name { + continue + } + + if role.Name == config.OpRole { + authorized = true + } } } - log.Infof("User %v not authorized.", m.Author.Username) - ctx.sendMessage("fuck you. you're not allowed to do that.", m.Tts) - return false - } + if !authorized { + log.Infof("User %v not authorized.", m.Author.Username) + ctx.sendMessage("fuck you. you're not allowed to do that.", m.Tts) + return + } - fn, ok := cmdMap[strings.ToLower(ctx.Command)] - if ok { fn(ctx) return } @@ -156,5 +167,4 @@ func onMessage(s *discordgo.Session, m *discordgo.MessageCreate) { ctx.sendMessage("NO IMGUR", m.Tts) } } - } @@ -2,12 +2,9 @@ package thulani import ( "encoding/json" - "os" - "net/url" - + "os" "strconv" - "sync" "github.com/bwmarrin/discordgo" @@ -49,7 +46,7 @@ func handle(err error) { } func LoadConfig(filename string) (*Config, error) { - file, err := os.Open("config.json") + file, err := os.Open(filename) if err != nil { return nil, err } @@ -59,9 +56,6 @@ func LoadConfig(filename string) (*Config, error) { return &conf, err } -var _oauthUrl string -var oauthOnce sync.Once - const requestedPerms = discordgo.PermissionEmbedLinks | discordgo.PermissionReadMessages | discordgo.PermissionAddReactions | @@ -75,6 +69,9 @@ const requestedPerms = discordgo.PermissionEmbedLinks | discordgo.PermissionVoiceUseVAD | discordgo.PermissionAttachFiles +var _oauthUrl string +var oauthOnce sync.Once + func oauthUrl() string { oauthOnce.Do(func() { oUrl, err := url.Parse("https://discordapp.com/api/oauth2/authorize") |
