parent
f1112c2fbf
commit
5ce16fcbd0
@ -1,2 +1,3 @@
|
|||||||
token.txt
|
token.txt
|
||||||
|
roles.txt
|
||||||
bot.db
|
bot.db
|
||||||
|
@ -0,0 +1,53 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"io/ioutil"
|
||||||
|
"strings"
|
||||||
|
"sync"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"github.com/bwmarrin/discordgo"
|
||||||
|
)
|
||||||
|
|
||||||
|
const guildID = "645550569573842945"
|
||||||
|
|
||||||
|
var roleMutex sync.Mutex
|
||||||
|
var roleQueue = make(map[string]bool)
|
||||||
|
var assignedRoles = make(map[string]int)
|
||||||
|
var roleFromLevel []string
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
roles, _ := ioutil.ReadFile("roles.txt")
|
||||||
|
roleFromLevel = strings.Split(string(roles), "\n")
|
||||||
|
for k, v := range roleFromLevel {
|
||||||
|
roleFromLevel[k] = strings.TrimSpace(v)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func addToRoleQueue(discordID string) {
|
||||||
|
roleMutex.Lock()
|
||||||
|
defer roleMutex.Unlock()
|
||||||
|
roleQueue[discordID] = true
|
||||||
|
}
|
||||||
|
|
||||||
|
func assignRole(dg *discordgo.Session) {
|
||||||
|
for {
|
||||||
|
roleMutex.Lock()
|
||||||
|
for k, v := range roleQueue {
|
||||||
|
if !v {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
roleQueue[k] = false
|
||||||
|
level, _ := getLevelAndXP(dg, k)
|
||||||
|
if assignedRoles[k] != level {
|
||||||
|
assignedRoles[k] = level
|
||||||
|
err := dg.GuildMemberRoleAdd(guildID, k, roleFromLevel[level-1])
|
||||||
|
if err != nil {
|
||||||
|
logError(dg, "assignRole", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
roleMutex.Unlock()
|
||||||
|
time.Sleep(5 * time.Second)
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue