-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathActions.js
More file actions
135 lines (120 loc) · 3.96 KB
/
Actions.js
File metadata and controls
135 lines (120 loc) · 3.96 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
122
123
124
125
126
127
128
129
130
131
132
133
134
135
const Attachment = require('discord.js').Attachment;
const UrlValidator = require('./UrlValidator.js');
const Utils = require('../utils/Utils.js');
const DISCORD_BASE_URL = 'https://discordapp.com';
const YOUTUBE_LINKS = 'youtube-links';
const INSTAGRAM_LINKS = 'instagram-links';
const SPOTIFY_LINKS = 'spotify-links';
const VLIVE_LINKS = 'vlive-links';
const TWITTER_LINKS = 'twitter-links';
const REDDIT_LINKS = 'reddit-links';
const GENERAL_LINKS = 'general-links';
const MEDIA = 'media';
const archiveMedia = (message) => {
const guild = message.guild;
if (!guild) return;
const embeds = message.embeds;
if (embeds) {
embeds.forEach(embed => {
!maybeSendYoutubeLinks(message, embed) &&
!maybeSendInstagramLinks(message, embed) &&
!maybeSendSpotifyLinks(message, embed) &&
!maybeSendVLiveLinks(message, embed) &&
!maybeSendTwitterLinks(message, embed) &&
!maybeSendRedditLinks(message, embed) &&
!maybeSendGeneralLinks(message, embed) &&
!maybeSendMediaLinks(message, embed);
});
}
maybeSendAttachments(message);
};
const maybeSendYoutubeLinks = (message, embed) => {
const match = UrlValidator.matchYTUrl(embed.url);
if (match) {
sendToChannel(message, YOUTUBE_LINKS, match[0]);
return true;
}
return false;
}
const maybeSendInstagramLinks = (message, embed) => {
const match = UrlValidator.matchIGUrl(embed.url);
if (match) {
sendToChannel(message, INSTAGRAM_LINKS, match[0]);
return true;
}
return false;
}
const maybeSendSpotifyLinks = (message, embed) => {
const match = UrlValidator.matchSpotifyUrl(embed.url);
if (match) {
sendToChannel(message, SPOTIFY_LINKS, match[0]);
return true;
}
return false;
}
const maybeSendVLiveLinks = (message, embed) => {
const match = UrlValidator.matchVLiveUrl(embed.url);
if (match) {
sendToChannel(message, VLIVE_LINKS, match[0]);
return true;
}
return false;
}
const maybeSendTwitterLinks = (message, embed) => {
const match = UrlValidator.matchTwitterUrl(embed.url);
if (match) {
sendToChannel(message, TWITTER_LINKS, match[0]);
return true;
}
return false;
}
const maybeSendRedditLinks = (message, embed) => {
const match = UrlValidator.matchRedditUrl(embed.url);
if (match) {
sendToChannel(message, REDDIT_LINKS, match[0]);
return true;
}
return false;
}
const maybeSendGeneralLinks = (message, embed) => {
if (embed.type === 'link') {
sendToChannel(message, GENERAL_LINKS, embed.url);
return true;
}
return false;
}
const maybeSendMediaLinks = (message, embed) => {
if (embed.type !== 'rich') {
sendToChannel(message, MEDIA, embed.url);
return true;
}
return false;
}
const maybeSendAttachments = (message) => {
const attachments = message.attachments;
if (attachments) {
attachments.forEach(attachment => {
sendToChannel(message, MEDIA, new Attachment(attachment.url), message.content);
})
}
}
const sendToChannel = async (originalMessage, channelName, messageToSend, extraContent) => {
const guild = originalMessage.guild;
const originalChannel = originalMessage.channel;
const channel = guild.channels.find(ch => ch.name === channelName);
if (channel) {
try {
await Utils.sendBlankLine(channel);
await channel.send(`${DISCORD_BASE_URL}/channels/${guild.id}/${originalChannel.id}/${originalMessage.id}`);
await Utils.sendSilentTag(channel, `${originalMessage.author} shared in ${originalChannel} `);
if (extraContent) await channel.send(extraContent);
await channel.send(messageToSend);
await Utils.sendBlankLine(channel);
} catch (e) {
console.error('Error while archiving media.', e);
}
}
}
module.exports = {
archiveMedia,
};