birdbot/discord/message.go
Layla 73a63fbf4d External Chat Linking (!4)
This PR adds the functionality for plugins to send and recieve messages linked to a specific channel.

Co-authored-by: Layla <layla@layla.gg>
Reviewed-on: https://gitea.sumulayla.synology.me/layla/birdbot/pulls/4
2023-06-17 19:38:47 -04:00

46 lines
1.1 KiB
Go

package discord
import (
"log"
"github.com/bwmarrin/discordgo"
"github.com/yeslayla/birdbot/core"
"github.com/yeslayla/birdbot/persistence"
)
func (discord *Discord) WebhookSendMessage(channel *core.Channel, displayName string, message string) {
webhookData, err := discord.db.GetDiscordWebhook(channel.ID)
if err != nil {
log.Printf("Error getting webhook from DB: %s", err)
return
}
if webhookData == nil {
webhook, err := discord.session.WebhookCreate(channel.ID, "BirdBot", "")
if err != nil {
log.Printf("Error creating webhook: %s", err)
return
}
webhookData = &persistence.DBDiscordWebhook{
ID: webhook.ID,
Token: webhook.Token,
}
if err := discord.db.SetDiscordWebhook(channel.ID, webhookData); err != nil {
log.Fatalf("Error failed to store webhook in DB: %s", err)
return
}
}
if _, err = discord.session.WebhookExecute(webhookData.ID, webhookData.Token, false, &discordgo.WebhookParams{
Content: message,
Username: displayName,
}); err != nil {
log.Printf("Failed to send message over webhook: %s", err)
}
}