Now supports embeds as an optional parameter. Already 80% less copy paste code for the redirects. Can’t get it of it 100% because reasons. Slight adjustments to logging so I can finally see embeds the bot is sending.
This commit is contained in:
parent
9dd7775168
commit
3b672e2f30
43
command.go
43
command.go
@ -67,7 +67,12 @@ func registerCommand(command Command) {
|
||||
*/
|
||||
func evaluateMessage(s *discordgo.Session, m *discordgo.MessageCreate) {
|
||||
if m.Author.ID == s.State.User.ID {
|
||||
// Properly log embeds
|
||||
if len(m.Embeds) > 0 {
|
||||
log.Printf("<Self> %s", m.Embeds[0].Description)
|
||||
} else {
|
||||
log.Printf("<Self> %s", m.Content)
|
||||
}
|
||||
return
|
||||
}
|
||||
for _, command := range commands {
|
||||
@ -161,32 +166,36 @@ func generateReply(message *discordgo.MessageCreate, command *Command) string {
|
||||
}
|
||||
|
||||
/*
|
||||
Any message passed to this method will be redirected to config.ModChannel.
|
||||
This is useful for anonymous complaints or similar messages.
|
||||
*/
|
||||
// TODO: refactor this and the next into a more general redirect function
|
||||
func redirectComplaint(s *discordgo.Session, m *discordgo.MessageCreate) {
|
||||
embed := &discordgo.MessageEmbed{
|
||||
Author: &discordgo.MessageEmbedAuthor{},
|
||||
Color: 0xbb0000,
|
||||
Description: m.Content,
|
||||
}
|
||||
s.ChannelMessageSendEmbed(config.ModChannel, embed)
|
||||
* I’m beginning to doubt my own self-imposed limitations of
|
||||
* only allowing func(session, message) to be attached to commands,
|
||||
* but refactoring that might be more effort than it’s worth.
|
||||
* Hence, small wrappers around the redirect function.
|
||||
*/
|
||||
func modComplain(s *discordgo.Session, m *discordgo.MessageCreate) {
|
||||
redirectMessage(s, m, config.ModChannel, true)
|
||||
dm, _ := s.UserChannelCreate(m.Author.ID)
|
||||
s.ChannelMessageSend(dm.ID, config.ComplaintReceivedMessage)
|
||||
}
|
||||
|
||||
// copy paste programming btw :haHAA:
|
||||
func redirectComplaintToDM(s *discordgo.Session, m *discordgo.MessageCreate) {
|
||||
func selphyComplain(s *discordgo.Session, m *discordgo.MessageCreate) {
|
||||
dm_target, _ := s.UserChannelCreate("190958368301645824")
|
||||
redirectMessage(s, m, dm_target.ID, true)
|
||||
dm, _ := s.UserChannelCreate(m.Author.ID)
|
||||
s.ChannelMessageSend(dm.ID, config.ComplaintReceivedMessage)
|
||||
}
|
||||
|
||||
func redirectMessage(s *discordgo.Session, m *discordgo.MessageCreate, target string, isEmbed bool) {
|
||||
if isEmbed {
|
||||
embed := &discordgo.MessageEmbed{
|
||||
// Embed are anonymized by default for now. Fits the use case.
|
||||
Author: &discordgo.MessageEmbedAuthor{},
|
||||
Color: 0xbb0000,
|
||||
Description: m.Content,
|
||||
}
|
||||
dm_target, _ := s.UserChannelCreate("190958368301645824")
|
||||
s.ChannelMessageSendEmbed(dm_target.ID, embed)
|
||||
dm, _ := s.UserChannelCreate(m.Author.ID)
|
||||
s.ChannelMessageSend(dm.ID, config.ComplaintReceivedMessage)
|
||||
s.ChannelMessageSendEmbed(target, embed)
|
||||
return
|
||||
}
|
||||
s.ChannelMessageSend(target, messageToString(m.Message))
|
||||
}
|
||||
|
||||
func echoMessage(s *discordgo.Session, m *discordgo.MessageCreate) {
|
||||
|
@ -23,7 +23,7 @@ func onJoin(s *discordgo.Session, member *discordgo.GuildMemberAdd) {
|
||||
}
|
||||
if err != nil {
|
||||
// if any of the preceding operations produced an error
|
||||
log.Printf("Sending welcome @mention at %s", userToString(member.User))
|
||||
log.Printf("Sending welcome @mention @%s", userToString(member.User))
|
||||
s.ChannelMessageSend(config.GeneralChannel, fmt.Sprintf("Wilkommen <@%s>. Bitte aktiviere vorübergehend DMs für diesen Server und sende eine Nachricht mit !welcome an mich.", member.User.ID))
|
||||
}
|
||||
}
|
||||
|
6
main.go
6
main.go
@ -53,9 +53,9 @@ func addCommands() {
|
||||
registerCommand(Command{Trigger: "^[^`]*([()|DoOvVcC][-=^']?;|;[-=^']?[()|DoOpPvVcC3]|:wink:|😉)[^`]*$", Output: "<@%s> Oboe!", DeleteInput: true, OutputIsReply: true, Type: CommandTypeRegex})
|
||||
registerCommand(Command{Trigger: "(\\s|\n|^)[nN][hH]([ ?.,\n]|$)", Output: "<@%s> „nh“ ist kein Wort, du Oboe!", DeleteInput: true, OutputIsReply: true, Type: CommandTypeRegex})
|
||||
registerCommand(Command{Trigger: "einzigste", Output: "<@%s> Es heißt „einzige“, du Tuba.", DeleteInput: true, OutputIsReply: true, Type: CommandTypeContains})
|
||||
registerCommand(Command{Trigger: "!complain", Type: CommandTypePrefix, DMOnly: true, Function: redirectComplaint})
|
||||
registerCommand(Command{Trigger: "!scomplain", Type: CommandTypePrefix, DMOnly: true, Function: redirectComplaintToDM})
|
||||
registerCommand(Command{Trigger: "!beschwerde", Type: CommandTypePrefix, DMOnly: true, Function: redirectComplaint})
|
||||
registerCommand(Command{Trigger: "!complain", Type: CommandTypePrefix, DMOnly: true, Function: modComplain})
|
||||
registerCommand(Command{Trigger: "!scomplain", Type: CommandTypePrefix, DMOnly: true, Function: selphyComplain})
|
||||
registerCommand(Command{Trigger: "!beschwerde", Type: CommandTypePrefix, DMOnly: true, Function: modComplain})
|
||||
|
||||
for comm, _ := range config.RoleCommands {
|
||||
registerCommand(Command{Trigger: comm, Type: CommandTypeFullMatch, DMOnly: true, Function: giveAgeRole})
|
||||
|
Loading…
Reference in New Issue
Block a user