discord-multipurpose-bot/commands/general/urbanDictionary.js
2024-09-08 01:14:48 +01:00

86 lines
2.8 KiB
JavaScript

const { SlashCommandBuilder, EmbedBuilder } = require("discord.js");
const axios = require("axios");
module.exports = {
data: new SlashCommandBuilder()
.setName("urban")
.setDescription("Get the definition from Urban Dictionary")
.addStringOption((option) =>
option
.setName("term")
.setDescription("The term to look up")
.setRequired(true)
),
async execute(interaction, client) {
const term = interaction.options.getString("term");
const url = `https://mashape-community-urban-dictionary.p.rapidapi.com/define?term=${encodeURIComponent(
term
)}`;
const options = {
method: "GET",
url: url,
headers: {
"X-RapidAPI-Key": "272f95b62amsh3dddd28f7289395p1bd2a9jsna5ee0dd5d9ea", // public API key please dont shout at me, https://rapidapi.com/community/api/urban-dictionary/playground/53aa4f68e4b07e1f4ebeb2b0
"X-RapidAPI-Host": "mashape-community-urban-dictionary.p.rapidapi.com",
},
};
try {
const response = await axios.request(options);
const data = response.data;
if (data.list.length === 0) {
return await interaction.reply({
content: "🚫 No definitions found.",
ephemeral: true,
});
}
const definition = data.list[0];
const author = definition.author || "Unknown"; // Default if author info is missing
const guild = interaction.guild;
const serverName = guild.name;
const serverIcon = guild.iconURL();
const embed = new EmbedBuilder()
.setColor("#3498db")
.setTitle(`📚 Definition of: **${definition.word}**`)
.setDescription(definition.definition)
.setThumbnail(
"https://upload.wikimedia.org/wikipedia/commons/thumb/7/7f/Urban_Dictionary_Logo.svg/1200px-Urban_Dictionary_Logo.svg.png"
)
.addFields(
{
name: "📖 Example",
value: definition.example || "No example provided",
inline: false,
},
{
name: "👍 Votes",
value: `${definition.thumbs_up} 👍 | ${definition.thumbs_down} 👎`,
inline: true,
},
{
name: "✍️ Submitted by",
value: author,
inline: false,
}
)
.setFooter({
text: `Powered by Urban Dictionary | ${serverName}`,
iconURL: serverIcon,
})
.setTimestamp();
await interaction.reply({ embeds: [embed] });
} catch (error) {
console.error("Error fetching Urban Dictionary term:", error);
await interaction.reply({
content:
"⚠️ There was an error while fetching the term. Please try again later.",
ephemeral: true,
});
}
},
};