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
|
|
|
}
|