'use strict';
// eslint-disable-next-line no-unused-vars
const Discord = require('discord.js');
const { colours } = require('../config');
const { jsCodeBlock } = require('../modules');
const { embedScaffold } = require('../handlers');
/** */
/**
*
* @function handlers.sendDirect
* @param {Discord.User | Discord.GuildMember | Discord.DMChannel} user User to send to
* @param {string | Discord.MessagePayload | Discord.MessageOptions} options Message options
* @param {?Discord.GuildTextBasedChannel} guildChannel A guild channel that the user has access to, to send an error in case cannot send DM
* @param {boolean} [toDebug=false] Whether to send the error message to debugging rather than the user in a guild channel
* @returns {Promise<void | Discord.Message>} Message if it was sent
*/
module.exports = async (user, options, guildChannel, toDebug = false) => {
// Send message to user
return await user.send(options)
.catch(error => {
const support = '[support.discord.com](https://support.discord.com/hc/en-us/articles/217916488-Blocking-Privacy-Settings)';
console.error(error);
// Send correct error message depending on intended user
if (toDebug) embedScaffold(null, null, `Error sending direct message to ${user}.`, colours.error, 'DEBUG', 'More Information', support, jsCodeBlock(error.stack));
else embedScaffold(guildChannel.guild, guildChannel, `${user} I can't send direct messages to you!`, colours.error, 'MESSAGE', 'More Information', support);
});
};
source