mmm / plugins /currency.js
ravenbs1's picture
Upload 140 files
046b271 verified
const { cmd } = require("../command");
const axios = require('axios');
const BASE_URL = "https://v6.exchangerate-api.com/v6";
const API_KEY = "9c8b8532d40e5da04fac9772";
cmd({
pattern: "convertmoney",
react: "💸",
alias: ["currency", "cvmoney"],
desc: "Convert money from one currency to another currency",
category: "utility",
use: ".currency amount fromCurrency toCurrency (e.g: .convert 100 USD EUR)",
filename: __filename,
}, async (conn, mek, msg, { from, reply, args }) => {
try {
if (args.length !== 3) {
return reply("*⭕ ɪɴᴠᴀʟɪᴅ ғᴏʀᴍᴀᴛ! ᴜsᴇ: .ᴄᴜʀʀᴇɴᴄʏ ᴀᴍᴏᴜɴᴛ ғʀᴏᴍᴄᴜʀʀᴇɴᴄʏ ᴛᴏᴄᴜʀʀᴇɴᴄʏ*\n*ᴇxᴀᴍᴘʟᴇ: .ᴄᴜʀʀᴇɴᴄʏ 𝟷𝟶𝟶 ᴜsᴅ ᴘᴋʀ*");
}
const amount = parseFloat(args[0]);
const fromCurrency = args[1].toUpperCase();
const toCurrency = args[2].toUpperCase();
if (isNaN(amount)) {
return reply("*❌ ᴘʟᴇᴀsᴇ ᴘʀᴏᴠɪᴅᴇ ᴀ ᴠᴀʟɪᴅ ᴀᴍᴏᴜɴᴛ!*");
}
const response = await axios.get(`${BASE_URL}/${API_KEY}/latest/${fromCurrency}`);
if (response.data.result === "error") {
throw new Error(response.data["error-type"]);
}
const rates = response.data.conversion_rates;
if (!rates[toCurrency]) {
return reply("*❌ ɪɴᴠᴀʟɪᴅ ᴛᴀʀɢᴇᴛ ᴄᴜʀʀᴇɴᴄʏ ᴄᴏᴅᴇ! ᴘʟᴇᴀsᴇ ᴜsᴇ ᴠᴀʟɪᴅ ᴄᴜʀʀᴇɴᴄʏ ᴄᴏᴅᴇs ʟɪᴋᴇ ᴜsᴅ, ᴇᴜʀ, ɢʙᴘ, ᴇᴛᴄ.*");
}
const convertedAmount = (amount * rates[toCurrency]).toFixed(2);
const formattedAmount = new Intl.NumberFormat().format(amount);
const formattedResult = new Intl.NumberFormat().format(convertedAmount);
const message = `*🌍 ᴀʟɪ-ᴍᴅ- ᴄᴜʀʀᴇɴᴄʏ ᴄᴏɴᴠᴇʀsɪᴏɴ 💵*\n\n` +
`*💲 ғʀᴏᴍ:* ${formattedAmount} ${fromCurrency}\n` +
`*🏷️ ᴛᴏ:* ${formattedResult} ${toCurrency}\n` +
`*💰 ʀᴀᴛᴇ:* 1 ${fromCurrency} = ${rates[toCurrency]} ${toCurrency}\n\n` +
`*⏰ ʟᴀsᴛ ᴜᴘᴅᴀᴛᴇᴅ:* ${response.data.time_last_update_utc}`;
reply(message);
} catch (error) {
console.error("Currency conversion error:", error);
if (error.message === "unsupported-code") {
reply("❌ Invalid currency code! Please use valid currency codes like USD, EUR, GBP, etc.");
} else if (error.message === "malformed-request") {
reply("❌ Invalid API request format. Please try again.");
} else if (error.message === "invalid-key") {
reply("❌ API key validation failed. Please contact the administrator.");
} else if (error.message === "inactive-account") {
reply("❌ API account is not active. Please contact the administrator.");
} else if (error.message === "quota-reached") {
reply("❌ API quota has been reached. Please try again later.");
} else {
reply("❌ Failed to convert currency. Please try again later.");
}
}
});