82 lines
2.7 KiB
JavaScript
82 lines
2.7 KiB
JavaScript
const { EmbedBuilder, AttachmentBuilder } = require('discord.js');
|
|
const unirest = require('unirest');
|
|
const download = require('download-file');
|
|
const notDefined = require("is-not-defined");
|
|
|
|
function createDictionaryEmbed(word, phonetic, meaningsArray, user) {
|
|
return new EmbedBuilder()
|
|
.setColor("#FF0000")
|
|
.setTitle(word + ": " + phonetic)
|
|
.addFields(meaningsArray)
|
|
.setTimestamp()
|
|
.setFooter({
|
|
text: `Requested by ${user.tag}`,
|
|
iconURL: `${user.displayAvatarURL()}`
|
|
});
|
|
}
|
|
|
|
module.exports = {
|
|
name: "dictionary",
|
|
description: "Returns information about a word",
|
|
options: [{
|
|
name: "word",
|
|
description: "The data you would like inside of the QR",
|
|
required: true,
|
|
type: 3 // 6 is type USER
|
|
}],
|
|
async run(client, interaction) {
|
|
let rand = Math.floor(Math.random() * 99999).toString();
|
|
let word = interaction.options._hoistedOptions[0].value;
|
|
let meaningsArray = [];
|
|
|
|
let response = await unirest
|
|
.get(`https://api.dictionaryapi.dev/api/v2/entries/en/${word}`)
|
|
.headers({
|
|
'Accept': 'application/json',
|
|
'Content-Type': 'application/json',
|
|
});
|
|
|
|
let data = response.body[0];
|
|
if (notDefined(data)) {
|
|
return interaction.editReply("Sorry, nothing was found!");
|
|
}
|
|
|
|
let phonetic = data.phonetics[1] ? data.phonetics[1].text : "";
|
|
let audio = data.phonetics[0].audio;
|
|
if (!audio) {
|
|
for (let wordData of data.meanings) {
|
|
let definition = wordData.definitions[0];
|
|
meaningsArray.push({
|
|
name: wordData.partOfSpeech,
|
|
value: `${definition.definition}\nExample: ${definition.example || ""}`
|
|
});
|
|
}
|
|
let embed = createDictionaryEmbed(word, phonetic, meaningsArray, interaction.user);
|
|
interaction.editReply({ embeds: [embed] });
|
|
meaningsArray = [];
|
|
rand = Math.floor(Math.random() * 99999).toString();
|
|
} else {
|
|
// Options for Audio Download
|
|
let options = {
|
|
directory: "./audio/",
|
|
filename: rand + ".mp3"
|
|
}
|
|
|
|
download(audio, options, function(err) {
|
|
if (err) throw err;
|
|
for (let wordData of data.meanings) {
|
|
let definition = wordData.definitions[0];
|
|
meaningsArray.push({
|
|
name: wordData.partOfSpeech,
|
|
value: `${definition.definition}\nExample: ${definition.example || ""}`
|
|
});
|
|
}
|
|
let file = new AttachmentBuilder(`./audio/${rand}.mp3`);
|
|
let embed = createDictionaryEmbed(word, phonetic, meaningsArray, interaction.user);
|
|
interaction.editReply({ files: [file], embeds: [embed] });
|
|
meaningsArray = [];
|
|
rand = Math.floor(Math.random() * 99999).toString();
|
|
});
|
|
}
|
|
}
|
|
} |