added anonymous complaints

This commit is contained in:
kageru 2018-06-01 21:42:06 +02:00
parent 799fb9a901
commit 778852666c

67
main.go
View File

@ -3,7 +3,7 @@ package main
import ( import (
"fmt" "fmt"
"encoding/json" "encoding/json"
//"strings" "strings"
"os" "os"
"os/signal" "os/signal"
"syscall" "syscall"
@ -29,6 +29,8 @@ type Config struct {
WelcomeChannel string WelcomeChannel string
SendWelcomeDM bool SendWelcomeDM bool
RequireAccept bool RequireAccept bool
ComplaintReceivedMessage string
ModChannel string
WelcomeEmbed Embed WelcomeEmbed Embed
RoleCommands map[string]string RoleCommands map[string]string
} }
@ -146,32 +148,52 @@ func getUser(s *discordgo.Session, uid string) *discordgo.User {
log.Println(fmt.Sprintf("Someone deleted a message in %s: “%s”", channel.Name, messageToString(message))) log.Println(fmt.Sprintf("Someone deleted a message in %s: “%s”", channel.Name, messageToString(message)))
}*/ }*/
func redirectComplaint(s *discordgo.Session, m *discordgo.MessageCreate) {
embed := &discordgo.MessageEmbed {
Author: &discordgo.MessageEmbedAuthor{},
Color: 0xbb0000,
Description: m.Content,
}
s.ChannelMessageSendEmbed(config.ModChannel, embed)
}
func receivedDM(s *discordgo.Session, m *discordgo.MessageCreate) {
log.Printf("Received DM from %s with content: “%s”", userToString(m.Author), m.Content)
fmt.Sprintf("Received DM from %s with content: “%s”", userToString(m.Author), m.Content)
Member, _ := s.GuildMember(config.ServerID, m.Author.ID)
dm, _ := s.UserChannelCreate(Member.User.ID)
if strings.HasPrefix(m.Content, "!complain") {
redirectComplaint(s, m)
s.ChannelMessageSend(dm.ID, config.ComplaintReceivedMessage)
return
}
for comm, role := range config.RoleCommands {
if m.Content == comm {
for _, irole := range config.RoleCommands {
for _, mrole := range Member.Roles {
if irole == mrole {
s.ChannelMessageSend(dm.ID, "Baka, du kannst nur eine der Rollen haben.")
log.Printf("Denied Role %s to %s. User already has %s", roleName(s.State, irole), userToString(m.Author), roleName(s.State, irole))
return
}
}
}
log.Printf("Giving Role %s to %s", roleName(s.State, role), userToString(m.Author))
s.ChannelMessageSend(dm.ID, "Haaai, Ryoukai desu~")
s.GuildMemberRoleAdd(config.ServerID, m.Author.ID, role)
}
}
}
func genericReply(s *discordgo.Session, m *discordgo.MessageCreate) { func genericReply(s *discordgo.Session, m *discordgo.MessageCreate) {
if m.Author.ID == s.State.User.ID { if m.Author.ID == s.State.User.ID {
log.Printf("<Self> %s", m.Content)
return return
} }
if getChannel(s.State, m.ChannelID).Type == discordgo.ChannelTypeDM { if getChannel(s.State, m.ChannelID).Type == discordgo.ChannelTypeDM {
log.Printf("Received DM from %s with content: “%s”", userToString(m.Author), m.Content) receivedDM(s, m)
fmt.Sprintf("Received DM from %s with content: “%s”", userToString(m.Author), m.Content)
Member, _ := s.GuildMember(config.ServerID, m.Author.ID)
for comm, role := range config.RoleCommands {
if m.Content == comm {
dm, _ := s.UserChannelCreate(Member.User.ID)
for _, irole := range config.RoleCommands {
for _, mrole := range Member.Roles {
if irole == mrole {
s.ChannelMessageSend(dm.ID, "Baka, du kannst nur eine der Rollen haben.")
log.Printf("Denied Role %s to %s. User already has %s", roleName(s.State, irole), userToString(m.Author), roleName(s.State, irole))
return
}
}
}
log.Printf("Giving Role %s to %s", roleName(s.State, role), userToString(m.Author))
s.ChannelMessageSend(dm.ID, "Haaai, Ryoukai desu~")
s.GuildMemberRoleAdd(config.ServerID, m.Author.ID, role)
}
}
} }
if m.Author.ID == config.AdminID { if m.Author.ID == config.AdminID {
@ -211,6 +233,9 @@ func genericReply(s *discordgo.Session, m *discordgo.MessageCreate) {
// Admin stuff down here. This is very server-specific // Admin stuff down here. This is very server-specific
func replyGodmode(s *discordgo.Session, m *discordgo.MessageCreate) { func replyGodmode(s *discordgo.Session, m *discordgo.MessageCreate) {
if m.Content == fmt.Sprintf("<@%s> <3", s.State.User.ID) {
s.ChannelMessageSend(m.ChannelID, fmt.Sprintf("<@%s> <3", config.AdminID))
}
/* /*
if m.Content == "print_rules()" { if m.Content == "print_rules()" {
channel := getChannel(s.State, m.ChannelID) channel := getChannel(s.State, m.ChannelID)