pepebot/discord/admin.go

193 lines
4.0 KiB
Go

package main
import (
"net/http"
"github.com/bwmarrin/discordgo"
)
func (app *application) addWord(s *discordgo.Session, m *discordgo.MessageCreate, splitCommand []string) {
/* Check if admin */
r, err := app.checkIfAdmin(s, m)
if err != nil {
app.errorLog.Print(err)
return
}
if !r {
return
}
/* [0] = trigger, [1] is addword, [2] is the word! */
err = app.contextLength(splitCommand)
if err != nil {
s.ChannelMessageSend(m.ChannelID, "Please provide a word to add")
return
}
_, err = app.badwords.InsertNewWord(splitCommand[2], m.GuildID)
if err != nil {
app.errorLog.Print(err)
s.ChannelMessageSend(m.ChannelID, err.Error())
return
}
err = app.updateAllBadWords()
if err != nil {
app.unknownError(err, s, true, m.ChannelID)
return
}
app.successMessage(s, m)
}
func (app *application) removeWord(s *discordgo.Session, m *discordgo.MessageCreate, splitCommand []string) {
/* Check if admin */
r, err := app.checkIfAdmin(s, m)
if err != nil {
app.errorLog.Print(err)
return
}
if !r {
return
}
/* [0] = trigger, [1] is removeword, [2] is the word! */
err = app.contextLength(splitCommand)
if err != nil {
s.ChannelMessageSend(m.ChannelID, "Please provide a word to remove")
return
}
err = app.badwords.RemoveWord(splitCommand[2], m.GuildID)
if err != nil {
app.errorLog.Print(err)
s.ChannelMessageSend(m.ChannelID, err.Error())
return
}
err = app.updateAllBadWords()
if err != nil {
app.unknownError(err, s, true, m.ChannelID)
return
}
app.successMessage(s, m)
}
func (app *application) addAdmin(s *discordgo.Session, m *discordgo.MessageCreate, splitCommand []string) {
/* Check if admin */
r, err := app.checkIfAdmin(s, m)
if err != nil {
app.errorLog.Print(err)
return
}
if !r {
return
}
/* [0] = trigger, [1] is addadmin, [2] is the id! */
err = app.contextLength(splitCommand)
if err != nil {
s.ChannelMessageSend(m.ChannelID, "Please provide a role id")
return
}
allRoles, err := s.GuildRoles(m.GuildID)
if err != nil {
app.unknownError(err, s, true, m.ChannelID)
return
}
var found bool = false
var counter int = 0
for i := 0; i < len(allRoles); i++ {
if allRoles[i].ID == splitCommand[2] {
found = true
counter = i
break
}
}
if !found {
s.ChannelMessageSend(m.ChannelID, "This role id does not exist")
return
}
_, err = app.adminroles.AddAdminRole(allRoles[counter].Name, allRoles[counter].ID, m.GuildID)
if err != nil {
app.unknownError(err, s, true, m.ChannelID)
return
}
app.successMessage(s, m)
}
func (app *application) removeAdmin(s *discordgo.Session, m *discordgo.MessageCreate, splitCommand []string) {
/* Check if admin */
r, err := app.checkIfAdmin(s, m)
if err != nil {
app.errorLog.Print(err)
return
}
if !r {
return
}
/* [0] = trigger, [1] is removeadmin, [2] is the id! */
err = app.contextLength(splitCommand)
if err != nil {
s.ChannelMessageSend(m.ChannelID, "Please provide a role id")
return
}
allRoles, err := s.GuildRoles(m.GuildID)
if err != nil {
app.unknownError(err, s, true, m.ChannelID)
return
}
var found bool = false
var counter int = 0
for i := 0; i < len(allRoles); i++ {
if allRoles[i].ID == splitCommand[2] {
found = true
counter = i
break
}
}
if !found {
s.ChannelMessageSend(m.ChannelID, "This role id does not exist")
return
}
err = app.adminroles.RemoveAdminRole(allRoles[counter].Name, allRoles[counter].ID, m.GuildID)
if err != nil {
app.unknownError(err, s, true, m.ChannelID)
return
}
app.successMessage(s, m)
}
func (app *application) reloadPepeList(s *discordgo.Session, m *discordgo.MessageCreate) {
/* Check if admin */
r, err := app.checkIfAdmin(s, m)
if err != nil {
app.errorLog.Print(err)
return
}
if !r {
return
}
s.ChannelMessageSend(m.ChannelID, "Reloading list of pepes")
url := "http://" + app.pepeServer + "/reload"
_, err = http.Get(url)
if err != nil {
app.errorLog.Print(err)
s.ChannelMessageSend(m.ChannelID, "An error occured!")
return
}
app.successMessage(s, m)
}