TerraOceanPlugin/GoBot/discord/modules/admin.go

88 lines
2.2 KiB
Go

package modules
import (
"fmt"
"strings"
"github.com/bwmarrin/discordgo"
"TerraOceanBot/discord/backend"
)
//adminID is my Discord user ID (chanbakjsd#7968).
const adminID = "218983355746746369"
func sendAs(s *discordgo.Session, m *discordgo.MessageCreate, command []string) {
if m.Author.ID != adminID {
return
}
if len(command) < 3 {
return
}
message := strings.SplitN(m.Content, " ", 3)
msg, err := s.ChannelMessageSend(message[1], message[2])
if err != nil {
s.ChannelMessageSend(m.ChannelID, err.Error())
}
s.ChannelMessageSend(m.ChannelID, "The message has been sent. Discord ID: "+msg.ID)
}
func editAs(s *discordgo.Session, m *discordgo.MessageCreate, command []string) {
if m.Author.ID != adminID {
return
}
if len(command) < 4 {
return
}
message := strings.SplitN(m.Content, " ", 4)
_, err := s.ChannelMessageEdit(message[1], message[2], message[3])
if err != nil {
s.ChannelMessageSend(m.ChannelID, err.Error())
}
s.ChannelMessageSend(m.ChannelID, "The message has been edited.")
}
func viewTrustLevel(s *discordgo.Session, m *discordgo.MessageCreate, command []string) {
if m.Author.ID != adminID {
return
}
if len(command) > 1 {
value, err := backend.GetTrust(s, command[1])
if err != nil {
s.ChannelMessageSend(m.ChannelID, err.Error())
return
}
total, err := backend.GetTotalTrust(s)
if err != nil {
s.ChannelMessageSend(m.ChannelID, err.Error())
return
}
s.ChannelMessageSend(m.ChannelID, fmt.Sprintf("Trust level is %.1f/%.1f (%.2f%%) for user <@%d>.", value, total, value/total*100, command[1]))
return
}
total, err := backend.GetTotalTrust(s)
if err != nil {
s.ChannelMessageSend(m.ChannelID, err.Error())
return
}
message := ""
members, err := backend.GetAllMembers(s)
if err != nil {
s.ChannelMessageSend(m.ChannelID, err.Error())
return
}
for _, v := range members {
value, err := backend.GetTrust(s, v.User.ID)
if err == backend.ErrNotMember {
continue
}
if err != nil {
s.ChannelMessageSend(m.ChannelID, err.Error())
return
}
message += fmt.Sprintf("%s#%s - %.1f/%.1f (%.2f%%)\n", v.User.Username, v.User.Discriminator, value, total, value/total*100)
}
s.ChannelMessageSend(m.ChannelID, message)
}