summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNathan Perry <avaglir@gmail.com>2017-07-27 21:54:59 -0400
committerNathan Perry <avaglir@gmail.com>2017-07-27 21:54:59 -0400
commit54359c61daadf1d61730d224675c3b4595a5b83a (patch)
tree7fdf2e0aeafa399a208a75b6ee43c1e9fe6aa066
parentc8f28679d10b3004fb7f04f54e625284c93e0c70 (diff)
some more updates
-rw-r--r--cmd/main.go2
-rw-r--r--thulani.go56
-rw-r--r--util.go13
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)
}
diff --git a/thulani.go b/thulani.go
index d057768..6dfdb75 100644
--- a/thulani.go
+++ b/thulani.go
@@ -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)
}
}
-
}
diff --git a/util.go b/util.go
index bd44d8d..8e6de1e 100644
--- a/util.go
+++ b/util.go
@@ -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")