hmn/src/discord/library.go

58 lines
1.3 KiB
Go

package discord
import (
"context"
"git.handmade.network/hmn/hmn/src/config"
"git.handmade.network/hmn/hmn/src/db"
"git.handmade.network/hmn/hmn/src/oops"
)
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
}
switch msg.Type {
case MessageTypeDefault, MessageTypeReply, MessageTypeApplicationCommand:
default:
return false, nil
}
if !msg.OriginalHasFields("content") {
return false, nil
}
// Maybe delete it if it's bad
didDelete = false
if !messageHasLinks(msg.Content) {
err := DeleteMessage(ctx, msg.ChannelID, msg.ID)
if err != nil {
return false, oops.New(err, "failed to delete message")
}
didDelete = true
if !msg.Author.IsBot {
channel, err := CreateDM(ctx, msg.Author.ID)
if err != nil {
return false, oops.New(err, "failed to create DM channel")
}
err = SendMessages(ctx, dbConn, MessageToSend{
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 {
return false, oops.New(err, "failed to send showcase warning message")
}
}
}
return didDelete, nil
}