hmn/src/discord/library.go

58 lines
1.3 KiB
Go
Raw Normal View History

2021-08-21 16:15:27 +00:00
package discord
import (
"context"
2021-12-23 23:28:40 +00:00
"git.handmade.network/hmn/hmn/src/config"
"git.handmade.network/hmn/hmn/src/db"
2021-08-21 16:15:27 +00:00
"git.handmade.network/hmn/hmn/src/oops"
)
2021-12-23 23:28:40 +00:00
func maybeDeleteLibraryMsg(
ctx context.Context,
dbConn db.ConnOrTx,
msg *Message,
) (didDelete bool, err error) {
// Ensure basic info about the message
if msg.ChannelID != config.Config.Discord.LibraryChannelID {
return false, nil
}
2021-08-21 16:15:27 +00:00
switch msg.Type {
case MessageTypeDefault, MessageTypeReply, MessageTypeApplicationCommand:
default:
2021-12-23 23:28:40 +00:00
return false, nil
2021-08-21 16:15:27 +00:00
}
if !msg.OriginalHasFields("content") {
2021-12-23 23:28:40 +00:00
return false, nil
2021-08-21 16:15:27 +00:00
}
2021-12-23 23:28:40 +00:00
// Maybe delete it if it's bad
didDelete = false
2021-08-21 16:15:27 +00:00
if !messageHasLinks(msg.Content) {
err := DeleteMessage(ctx, msg.ChannelID, msg.ID)
if err != nil {
2021-12-23 23:28:40 +00:00
return false, oops.New(err, "failed to delete message")
2021-08-21 16:15:27 +00:00
}
2021-12-23 23:28:40 +00:00
didDelete = true
2021-08-21 16:15:27 +00:00
if !msg.Author.IsBot {
channel, err := CreateDM(ctx, msg.Author.ID)
if err != nil {
2021-12-23 23:28:40 +00:00
return false, oops.New(err, "failed to create DM channel")
2021-08-21 16:15:27 +00:00
}
2021-12-23 23:28:40 +00:00
err = SendMessages(ctx, dbConn, MessageToSend{
2021-08-21 16:15:27 +00:00
ChannelID: channel.ID,
Req: CreateMessageRequest{
Content: "Posts in #the-library are required to have a link. Discuss library content in other relevant channels.",
},
})
if err != nil {
2021-12-23 23:28:40 +00:00
return false, oops.New(err, "failed to send showcase warning message")
2021-08-21 16:15:27 +00:00
}
}
}
2021-12-23 23:28:40 +00:00
return didDelete, nil
2021-08-21 16:15:27 +00:00
}