-
Notifications
You must be signed in to change notification settings - Fork 9
Expand file tree
/
Copy pathrenderMessage.js
More file actions
121 lines (108 loc) · 3.76 KB
/
renderMessage.js
File metadata and controls
121 lines (108 loc) · 3.76 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
const { toHTML } = require('discord-markdown');
const emoji = require('node-emoji');
function isValidEmoji(text) {
const invalidEmojiPatterns = [':o', ':O', ':(', ':)', ':p', ':P', ':d', ':D', ':v', ':V', ':/'];
return !invalidEmojiPatterns.includes(text);
}
function validInvs(txt) {
const regex = /((http|https)?:\/\/)?(www\.)?((discord|invite|dis)\.(gg|io|li|me|gd)|(discordapp|discord)\.com\/invite)\/[aA-zZ|0-9]{2,25}/gim;
const invs = txt.match(regex);
return invs ? true : false;
}
function extractContent(html) {
if (html.replace(/<[^>]+>/g, '').trim()) {
return true;
} else {
return false;
}
}
function parseDate(date) {
if (
date.toLocaleDateString('es-ES') ===
new Date().toLocaleDateString('es-ES')
)
return `Hoy a las ${date.toLocaleTimeString('es-ES', {
hour: '2-digit',
minute: '2-digit',
})}`;
return date.toLocaleDateString('es-ES');
}
function processFrontEndMessage(client, message) {
const dataMDiscord = toHTML(message.content, {
discordCallback: {
user: (node) => {
return (
'@' +
(message.guild.members.cache.get(node.id)
? message.guild.members.cache.get(node.id).displayName
: client.users.cache.get(node.id)
? client.users.cache.get(node.id).username
: 'Deleted User')
);
},
channel: (node) => {
return (
'#' +
(message.guild.channels.cache.get(node.id)
? message.guild.channels.cache.get(node.id).name
: 'deleted-channel')
);
},
role: (node) => {
return (
'@' +
(message.guild.roles.cache.get(node.id)
? message.guild.roles.cache.get(node.id).name
: 'deleted-role')
);
},
},
escapeHTML: true,
});
// Implementando un reemplazo más seguro para emojis
let emojiFind = dataMDiscord.replace(/:([\w+-]+):/g, (match, emojiName) => {
if (!isValidEmoji(match)) return match;
const foundEmoji = emoji.get(emojiName);
return foundEmoji !== `:${emojiName}:`
? `<i class="twa twa-3x twa-${emojiName}"></i>`
: match;
});
if (extractContent(emojiFind)) {
emojiFind = emojiFind.replace(/:([\w+-]+):/g, (match, emojiName) => {
if (!isValidEmoji(match)) return match;
const foundEmoji = emoji.get(emojiName);
return foundEmoji !== `:${emojiName}:`
? `<i class="twa twa-1x twa-${emojiName}"></i>`
: match;
});
}
if (validInvs(emojiFind))
emojiFind = `**${message.author.username}** invalid link.`;
return {
content: emojiFind,
author: message.member
? message.member.displayName
: message.author.username,
avatarURL: message.author.displayAvatarURL({
format: 'png',
dynamic: true,
size: 1024,
}),
id: message.author.id,
messageID: message.id,
date: parseDate(message.createdAt),
colorName: message.member ? message.member.displayHexColor : '#FFFFFF',
attachmentURL:
message.attachments.first() &&
message.attachments.first().height !== null
? message.attachments.first().attachment
: null,
};
}
module.exports = {
validInvs,
extractContent,
processFrontEndMessage,
parseDate,
isValidEmoji
};