From e3dba82cf3cdbdf5c0aad3d308013695a2074ecf Mon Sep 17 00:00:00 2001 From: Indrajith K L Date: Sat, 27 Mar 2021 21:57:16 +0530 Subject: Code Refactoring * Adds Config for commands * Moved Casual Messages to language.json --- src/commands/loadout.js | 75 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 src/commands/loadout.js (limited to 'src/commands/loadout.js') diff --git a/src/commands/loadout.js b/src/commands/loadout.js new file mode 100644 index 0000000..30ca276 --- /dev/null +++ b/src/commands/loadout.js @@ -0,0 +1,75 @@ +const Airtable = require('airtable'); +const {MessageEmbed} = require('discord.js'); +Airtable.configure({ + endpointUrl: 'https://api.airtable.com', + apiKey: process.env.AIRTABLE_KEY +}); +const base = Airtable.base('appppieGLc8loZp5H'); +const AirTableFields = { + WEAPON_TYPE: 'cod_weapon_type', + WEAPON_NAME: 'cod_weapon_name', + MATCH_TYPE: 'cod_match_type', + ATTACHMENTS: 'cod_weapon_attachments' +}; + +async function getCodMLoadOut(message, args) { + const codUserName = args[0]; + if (!codUserName) return; + base('cod_loadout').select({ + maxRecords: 2, + view: "Grid view", + filterByFormula: `({cod_username} = '${args[0]}')` + }).eachPage((records, fetchNextPage) => { + if (records && records.length > 0) { + records.forEach(async (record) => { + const weaponType = await getWeaponType(record.get(AirTableFields.WEAPON_TYPE)); + const weaponName = await getWeaponName(record.get(AirTableFields.WEAPON_NAME)); + const loadOutMessage = new MessageEmbed() + .setTitle(`Loadout of ${codUserName} : ${record.get(AirTableFields.MATCH_TYPE)}`) + .addField('Weapon Name', weaponName, true) + .addField('Weapon Type', weaponType, true) + .addField('Attachments', record.get(AirTableFields.ATTACHMENTS), true) + .setColor("RANDOM"); + message.channel.send(loadOutMessage); + }); + fetchNextPage(); + } else { + message.channel.send(`No Loadout found for ***${codUserName}***`); + } + + }, function done(err) { + if (err) { console.error(err); return; } + }); +} + +async function getWeaponType(weaponType) { + return new Promise((resolve, reject) => { + base('Weapon Types').find(weaponType, (error, record) => { + if (error) { + console.log(error); + reject(); + } else { + resolve(record.get(AirTableFields.WEAPON_TYPE)); + } + }); + }) +} + +async function getWeaponName(weaponName) { + return new Promise((resolve, reject) => { + base('Weapons').find(weaponName, (error, record) => { + if (error) { + console.log(error); + reject(); + } else { + resolve(record.get(AirTableFields.WEAPON_NAME)); + } + }); + }) +} + +module.exports = { + execute(client,message, args) { + getCodMLoadOut(message,args); + } +} \ No newline at end of file -- cgit v1.2.3