Compare commits
2 commits
a5b6924ddc
...
b5016bb39b
Author | SHA1 | Date | |
---|---|---|---|
b5016bb39b | |||
a0fc0103f3 |
2 changed files with 43 additions and 4 deletions
|
@ -1,5 +1,6 @@
|
||||||
import { Client, Message, MessageEmbed, TextBasedChannel } from 'discord.js';
|
import { Client, Message, MessageEmbed, TextBasedChannel } from 'discord.js';
|
||||||
import { getLocale } from '../../utils/locales';
|
import { getLocale } from '../../utils/locales';
|
||||||
|
import { isImage } from '../../utils/misc';
|
||||||
import { showDate } from '../../utils/time';
|
import { showDate } from '../../utils/time';
|
||||||
|
|
||||||
/** https://discord.js.org/#/docs/discord.js/main/class/Client?scrollTo=e-messageCreate */
|
/** https://discord.js.org/#/docs/discord.js/main/class/Client?scrollTo=e-messageCreate */
|
||||||
|
@ -75,21 +76,37 @@ export default async (message: Message, client: Client) => {
|
||||||
// Remove undefined elements
|
// Remove undefined elements
|
||||||
).filter(Boolean);
|
).filter(Boolean);
|
||||||
|
|
||||||
messages.map(valid_message => {
|
messages.map(quoted_msg => {
|
||||||
const embed = new MessageEmbed()
|
const embed = new MessageEmbed()
|
||||||
.setColor('#2f3136')
|
.setColor('#2f3136')
|
||||||
.setAuthor({
|
.setAuthor({
|
||||||
name: 'Citation',
|
name: 'Citation',
|
||||||
iconURL: valid_message?.author.displayAvatarURL(),
|
iconURL: quoted_msg?.author.displayAvatarURL(),
|
||||||
})
|
})
|
||||||
.setFooter({
|
.setFooter({
|
||||||
text: `Message posté le ${showDate(
|
text: `Posté le ${showDate(
|
||||||
client.config.default_lang,
|
client.config.default_lang,
|
||||||
getLocale(client, client.config.default_lang),
|
getLocale(client, client.config.default_lang),
|
||||||
valid_message?.createdAt as Date)
|
quoted_msg?.createdAt as Date)
|
||||||
}`,
|
}`,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Handle attachments
|
||||||
|
if (quoted_msg?.attachments.size === 1 && isImage(quoted_msg.attachments.first()?.name as string)) {
|
||||||
|
// Only contains one image
|
||||||
|
embed.setImage(quoted_msg.attachments.first()?.url as string);
|
||||||
|
} else {
|
||||||
|
// Contains more than one image or other files
|
||||||
|
let files = '';
|
||||||
|
quoted_msg?.attachments.forEach(attachment => {
|
||||||
|
files += `[${attachment.name}](${attachment.url}), `;
|
||||||
|
});
|
||||||
|
embed.addFields({
|
||||||
|
name: 'Fichiers joints',
|
||||||
|
value: `${files.slice(0, -2)}.`,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
return message.channel.send({ embeds: [embed] });
|
return message.channel.send({ embeds: [embed] });
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
|
@ -36,3 +36,25 @@ export const removeExtension = (filename: string) => {
|
||||||
|
|
||||||
return array.join('.');
|
return array.join('.');
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get extension from a filename.
|
||||||
|
* @param filename string of the filename
|
||||||
|
* @returns string of the extension if it exists
|
||||||
|
*/
|
||||||
|
export const getExtension = (filename: string) => {
|
||||||
|
const array = filename.split('.');
|
||||||
|
|
||||||
|
return array.pop();
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Define if a media is a media based on file extension.
|
||||||
|
* @param filename string of the filename
|
||||||
|
* @returns true is file is a media
|
||||||
|
*/
|
||||||
|
export const isImage = (filename: string) => {
|
||||||
|
return Boolean(getExtension(filename)?.match(
|
||||||
|
/jpg|jpeg|png|webp|gif/
|
||||||
|
));
|
||||||
|
};
|
||||||
|
|
Loading…
Reference in a new issue