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 }