seyfert-html-transcripts
Version:
A nicely formatted html transcript generator for seyfert.
102 lines • 6.09 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = SystemMessage;
exports.Highlight = Highlight;
exports.JoinMessage = JoinMessage;
const discord_components_react_1 = require("@derockdev/discord-components-react");
const react_1 = __importDefault(require("react"));
const utils_1 = require("../../utils/utils");
const types_1 = require("seyfert/lib/types");
async function SystemMessage({ message }) {
var _a, _b, _c;
const role = await ((_a = message.member) === null || _a === void 0 ? void 0 : _a.roles.highest());
switch (message.type) {
case types_1.MessageType.RecipientAdd:
case types_1.MessageType.UserJoin:
return (react_1.default.createElement(discord_components_react_1.DiscordSystemMessage, { id: `m-${message.id}`, key: message.id, type: "join" },
react_1.default.createElement(JoinMessage, { member: message.member, fallbackUser: message.author })));
case types_1.MessageType.ChannelPinnedMessage:
return (react_1.default.createElement(discord_components_react_1.DiscordSystemMessage, { id: `m-${message.id}`, key: message.id, type: "pin" },
react_1.default.createElement(Highlight, { color: (0, utils_1.convertToHEX)(role === null || role === void 0 ? void 0 : role.color) }, message.author.tag),
" pinned",
' ',
react_1.default.createElement("i", { "data-goto": (_b = message.messageReference) === null || _b === void 0 ? void 0 : _b.messageId }, "a message"),
" to this channel.",
message.reactions && message.reactions.length > 0 && (react_1.default.createElement(discord_components_react_1.DiscordReactions, { slot: "reactions" }, message.reactions.map((reaction, id) => (react_1.default.createElement(discord_components_react_1.DiscordReaction, { key: `${message.id}r${id}`, name: reaction.emoji.name, emoji: (0, utils_1.parseDiscordEmoji)(reaction.emoji), count: reaction.count })))))));
case types_1.MessageType.GuildBoost:
case types_1.MessageType.GuildBoostTier1:
case types_1.MessageType.GuildBoostTier2:
case types_1.MessageType.GuildBoostTier3:
return (react_1.default.createElement(discord_components_react_1.DiscordSystemMessage, { id: `m-${message.id}`, key: message.id, type: "boost" },
react_1.default.createElement(Highlight, { color: (0, utils_1.convertToHEX)(role === null || role === void 0 ? void 0 : role.color) }, message.author.tag),
" boosted the server!"));
case types_1.MessageType.ThreadStarterMessage:
return (react_1.default.createElement(discord_components_react_1.DiscordSystemMessage, { id: `ms-${message.id}`, key: message.id, type: "thread" },
react_1.default.createElement(Highlight, { color: (0, utils_1.convertToHEX)(role === null || role === void 0 ? void 0 : role.color) }, message.author.tag),
" started a thread:",
' ',
react_1.default.createElement("i", { "data-goto": (_c = message.messageReference) === null || _c === void 0 ? void 0 : _c.messageId }, message.content)));
default:
return undefined;
}
}
function Highlight({ children, color }) {
return react_1.default.createElement("i", { style: { color: color !== null && color !== void 0 ? color : 'white' } }, children);
}
const allJoinMessages = [
'{user} just joined the server - glhf!',
'{user} just joined. Everyone, look busy!',
'{user} just joined. Can I get a heal?',
'{user} joined your party.',
'{user} joined. You must construct additional pylons.',
'Ermagherd. {user} is here.',
'Welcome, {user}. Stay awhile and listen.',
'Welcome, {user}. We were expecting you ( ͡° ͜ʖ ͡°)',
'Welcome, {user}. We hope you brought pizza.',
'Welcome {user}. Leave your weapons by the door.',
'A wild {user} appeared.',
'Swoooosh. {user} just landed.',
'Brace yourselves {user} just joined the server.',
'{user} just joined. Hide your bananas.',
'{user} just arrived. Seems OP - please nerf.',
'{user} just slid into the server.',
'A {user} has spawned in the server.',
'Big {user} showed up!',
"Where's {user}? In the server!",
'{user} hopped into the server. Kangaroo!!',
'{user} just showed up. Hold my beer.',
'Challenger approaching - {user} has appeared!',
"It's a bird! It's a plane! Nevermind, it's just {user}.",
"It's {user}! Praise the sun! \\\\[T]/",
'Never gonna give {user} up. Never gonna let {user} down.',
'Ha! {user} has joined! You activated my trap card!',
'Cheers, love! {user} is here!',
'Hey! Listen! {user} has joined!',
"We've been expecting you {user}",
"It's dangerous to go alone, take {user}!",
"{user} has joined the server! It's super effective!",
'Cheers, love! {user} is here!',
'{user} is here, as the prophecy foretold.',
"{user} has arrived. Party's over.",
'Ready player {user}',
'{user} is here to kick butt and chew bubblegum. And {user} is all out of gum.',
"Hello. Is it {user} you're looking for?",
];
async function JoinMessage({ member, fallbackUser, }) {
const randomMessage = allJoinMessages[Math.floor(Math.random() * allJoinMessages.length)];
const role = await (member === null || member === void 0 ? void 0 : member.roles.highest());
return randomMessage
.split('{user}')
.flatMap((item, i) => {
var _a;
return [
item,
react_1.default.createElement(Highlight, { color: (0, utils_1.convertToHEX)(role === null || role === void 0 ? void 0 : role.color), key: i }, (_a = member === null || member === void 0 ? void 0 : member.nick) !== null && _a !== void 0 ? _a : fallbackUser.tag),
];
})
.slice(0, -1);
}
//# sourceMappingURL=systemMessage.js.map