slurpcord
Version:
Simple API wrapper for Discord
41 lines (36 loc) • 1.55 kB
JavaScript
import axios from 'axios';
import FormData from 'form-data';
import { message } from "../structures/index.js";
import SlurpcordError from '../../errors/index.js';
export default async function sendMessage(channelId, content, token, messageId = null) {
const formData = new FormData();
formData.append('payload_json', JSON.stringify({
content: typeof content === "string" ? content : content.content,
embeds: content.embeds || [],
message_reference: messageId ? { message_id: messageId, channel_id: channelId } : undefined,
}));
if (content.attachments && content.attachments.length > 0) {
for (let i = 0; i < content.attachments.length; i++) {
const attachment = content.attachments[i];
if (attachment.file && Buffer.isBuffer(attachment.file)) {
formData.append(`files[${i}]`, attachment.file, attachment.filename);
}
}
}
try {
const response = await axios.post(
`https://discord.com/api/v10/channels/${channelId}/messages`,
formData,
{
headers: {
'Authorization': `Bot ${token}`,
...formData.getHeaders(),
},
}
);
let messagedata = await message(response.data, token);
return messagedata;
} catch (error) {
throw new SlurpcordError("Error sending message:", error.response ? error.response.data : error.message);
}
}