updaye database , and model
This commit is contained in:
@@ -2,6 +2,7 @@ package discord
|
||||
|
||||
import (
|
||||
dsmodel "dorisbot/models/discord"
|
||||
pubmodel "dorisbot/models/public"
|
||||
"log"
|
||||
|
||||
"github.com/bwmarrin/discordgo"
|
||||
@@ -35,6 +36,86 @@ func messageCreateEvt(s *discordgo.Session, evt *discordgo.MessageCreate) {
|
||||
return
|
||||
}
|
||||
|
||||
// discord server not init
|
||||
if server == nil {
|
||||
cmds, err := pubmodel.GetGlobalCommand(cmd)
|
||||
if err != nil {
|
||||
log.Println("get command fail :: ", err)
|
||||
return
|
||||
}
|
||||
if len(cmds) == 0 {
|
||||
log.Printf("no command found {%s}\n", cmd)
|
||||
return
|
||||
}
|
||||
c := cmds[0]
|
||||
if c.RequireInit {
|
||||
log.Printf("{%s} require init server\n", cmd)
|
||||
return
|
||||
}
|
||||
|
||||
if c.RequireManage {
|
||||
ginfo, err := s.Guild(guildID)
|
||||
if err != nil {
|
||||
log.Println("get guild info err :: ", err)
|
||||
return
|
||||
}
|
||||
if ginfo.OwnerID != uid {
|
||||
log.Printf("{%s} require manage permission\n", cmd)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: command parser
|
||||
} else {
|
||||
cmds, err := pubmodel.GetCommandByPlatformBinding(cmd, server.ID, "discord")
|
||||
if err != nil {
|
||||
log.Println("get command err :: ", err)
|
||||
return
|
||||
}
|
||||
if len(cmds) == 0 {
|
||||
log.Printf("no command found {%s}\n", cmd)
|
||||
return
|
||||
}
|
||||
c := cmds[0]
|
||||
|
||||
// TODO: check user role group
|
||||
if c.RequireManage && server.Owner != uid {
|
||||
roles, err := server.GetRoleList()
|
||||
if err != nil {
|
||||
log.Println("get server role err :: ", err)
|
||||
return
|
||||
}
|
||||
rolePass := false
|
||||
if len(roles) > 0 {
|
||||
uinfo, err := s.GuildMember(guildID, uid)
|
||||
if err != nil {
|
||||
log.Println("get guild user info err :: ", err)
|
||||
return
|
||||
}
|
||||
if len(uinfo.Roles) > 0 {
|
||||
allPass := false
|
||||
for _, it := range roles {
|
||||
if allPass {
|
||||
break
|
||||
}
|
||||
for _, rid := range uinfo.Roles {
|
||||
if it.RoleID == rid {
|
||||
rolePass = true
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if !rolePass {
|
||||
log.Printf("{%s} require manage role\n", cmd)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: command parser
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func guildMemberAddEvt(s *discordgo.Session, evt *discordgo.GuildMemberAdd) {}
|
||||
|
||||
Reference in New Issue
Block a user