// Copyright 2019-2022 Campbell Crowley. All rights reserved.
// Author: Campbell Crowley (dev@campbellcrowley.com)
const ChannelAction = require('./ChannelAction.js');
/**
* @description Sends day start message.
*
* @memberof HungryGames~Action
* @inner
* @augments HungryGames~Action~ChannelAction
*/
class SendDayStartMessageAction extends ChannelAction {
/**
* @description Create an action that will send a message to the game channel
* saying the day has started.
* @todo Get locale properly for each game.
*/
constructor() {
super((hg, game, channel) => {
const embed = new hg._parent.Discord.EmbedBuilder();
if (game.currentGame.day.num === 0) {
embed.setTitle(hg.messages.get('bloodbathStart'));
} else {
embed.setTitle(
hg.messages.get('dayStart', null, game.currentGame.day.num));
}
if (!game.autoPlay && game.currentGame.day.num < 2) {
const prefix = hg._parent.bot.getPrefix(game.id);
embed.setFooter({
text: 'Tip: Use "' + prefix + hg._parent.postPrefix +
'autoplay" to automate the games.',
});
}
embed.setColor([255, 0, 255]);
if (!game || !game.options.disableOutput) {
channel.send({embeds: [embed]}).catch((err) => {
if (err.message === 'Missing Permissions' ||
err.message === 'Missing Access' ||
err.message === 'Unknown Channel') {
hg._parent.pauseGame(game.id);
} else {
console.error(err);
}
});
}
});
}
/**
* @description Create action from save data.
* @public
* @static
* @override
* @returns {HungryGames~SendDayStartMessageAction} The created action.
*/
static create() {
return new SendDayStartMessageAction();
}
}
module.exports = SendDayStartMessageAction;