1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
|
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 AirTableConfigs = {
MAIN_TABLE: 'cod_loadout',
WEAPONS_TYPE_TABLE: 'Weapon Types',
WEAPONS_TABLE: 'Weapons',
GRID_VIEW: 'Grid view',
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(AirTableConfigs.MAIN_TABLE).select({
maxRecords: 2,
view: AirTableConfigs.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(AirTableConfigs.WEAPON_TYPE));
const weaponName = await getWeaponName(record.get(AirTableConfigs.WEAPON_NAME));
const loadOutMessage = new MessageEmbed()
.setTitle(`Loadout of ${codUserName} : ${record.get(AirTableConfigs.MATCH_TYPE)}`)
.addField('Weapon Name', weaponName, true)
.addField('Weapon Type', weaponType, true)
.addField('Attachments', record.get(AirTableConfigs.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(AirTableConfigs.WEAPONS_TYPE_TABLE).find(weaponType, (error, record) => {
if (error) {
console.log(error);
reject();
} else {
resolve(record.get(AirTableConfigs.WEAPON_TYPE));
}
});
})
}
async function getWeaponName(weaponName) {
return new Promise((resolve, reject) => {
base(AirTableConfigs.WEAPONS_TABLE).find(weaponName, (error, record) => {
if (error) {
console.log(error);
reject();
} else {
resolve(record.get(AirTableConfigs.WEAPON_NAME));
}
});
})
}
module.exports = {
execute(client,message, args) {
getCodMLoadOut(message,args);
}
}
|