confia-form-backend / discord-webhook.js
elsamueldev's picture
Upload 6 files
e1dafe2 verified
import { urlSchema } from "./schemas.js";
export class DiscordWebhook {
#url;
constructor(url) {
this.#url = urlSchema.parse(url);
}
/**
*
* @param {object} payload
* @returns {boolean}
*/
#sendPayload = async (payload) => {
const response = await fetch(this.#url, {
method: 'POST',
body: JSON.stringify(payload),
headers: {
'Content-Type': 'application/json'
}
});
const sent = response.status === 204;
if (!sent) {
console.error(await response.text());
}
return sent;
};
/**
* @param {string} content
* @returns {Promise<boolean>}
*/
async sendPlainText(content) {
const payload = {
content
};
return this.#sendPayload(payload);
}
/**
*
* @param {object} content
* @returns {Promise<boolean>}
*/
async sendEmbed(content) {
const fields = [];
for (const [label, value] of Object.entries(content)) {
const field = {
name: label,
value: value
};
fields.push(field);
}
const embed = {
title: "Nuevo mensaje",
fields
};
const payload = {
embeds: [embed]
};
return this.#sendPayload(payload);
}
}