Untitled
unknown
javascript
3 years ago
6.9 kB
22
Indexable
async function ClanWars(tag, callback)
{
request
(
{
method: `GET`,
url: `https://api.clashofclans.com/v1/clans/%23${tag}/currentwar`,
headers:
{
"Authorization": "Bearer TOKEN"
}
}, (err, res, body) =>
{
const clanwar = JSON.parse(body);
const prepStart = new Date(clanwar.preparationStartTime.slice(0, -8));
const prepStartStr = `${prepStart.getDate()}/${prepStart.getMonth() + 1}/${prepStart.getFullYear()} ${prepStart.getHours()} ${prepStart.getMinutes()} ${prepStart.getSeconds()}`;
const start = new Date(clanwar.startTime.slice(0, -8));
const startStr = `${start.getDate()}/${start.getMonth() + 1}/${start.getFullYear()} ${start.getHours()} ${start.getMinutes()} ${start.getSeconds()}`;
const end = new Date(clanwar.endTime.slice(0, -8));
const endStr = `${end.getDate()}/${end.getMonth() + 1}/${end.getFullYear()} ${end.getHours()} ${end.getMinutes()} ${end.getSeconds()}`;
if (err)
{
callback(err);
return;
};
if (res.statusCode === 404)
{
const error = new Error(`Make sure you've provided a tag without # : \n :x: \`.clan #XYZ12345\`\n:white_check_mark: \`.clan XYZ12345\`\nIf the command still doesn't work contact staff and/or report using the .report (message) command`);
callback(error);
return;
};
callback(null, { clanwar, prepStartStr, startStr, endStr });
}
);
};
// Where I use it
const args = message.content.split(' ');
if (args[0].toLocaleLowerCase() === `.clanwar`)
{
const tag = args[1];
ClanWars(tag, (err, body) =>
{
var WinnerTag;
var WinnerName;
var Winnerbadge;
if (body.clanwar.clan.stars >= body.clanwar.opponent.stars)
{
if (body.clanwar.clan.destructionPercentage >= body.clanwar.opponent.destructionPercentage)
{
WinnerTag = body.clanwar.clan.tag;
WinnerName = body.clanwar.clan.name;
Winnerbadge = body.clanwar.clan.badgeUrls.medium;
}
}
else if (body.clanwar.clan.stars <= body.clanwar.opponent.stars)
{
if (body.clanwar.clan.destructionPercentage <= body.clanwar.opponent.destructionPercentage)
{
WinnerTag = body.clanwar.opponent.tag;
WinnerName = body.clanwar.opponent.name;
Winnerbadge = body.clanwar.opponent.badgeUrls.medium;
};
};
const WarEndedEmbed = new EmbedBuilder()
.setColor(0xF1D412)
.setTitle(`Winner: ${WinnerName}`)
.setURL(`https://link.clashofclans.com/en?action=OpenClanProfile&tag=${WinnerTag}`)
.setDescription(`**${body.clanwar.clan.name}** Has ended a war vs **${body.clanwar.opponent.name}** clan`)
.addFields(
{name: `Team Size `, value: `${body.clanwar.teamSize}`, inline: true},
{name: `Attacks Per Memeber `, value: `${body.clanwar.attacksPerMember}`, inline: true},
{name: `Name + level`, value: `${body.clanwar.clan.name} lvl ${body.clanwar.clan.clanLevel} vs ${body.clanwar.opponent.name} lvl ${body.clanwar.opponent.clanLevel}`, inline: true},
{name: `Preporation Start date`, value: `${body.prepStartStr}`, inline: true},
{name: `War Start date`, value: `${body.startStr}`, inline: true},
{name: `War End date`, value: `${body.endStr}`, inline: true},
)
.setThumbnail(Winnerbadge)
const WarEmbed = new EmbedBuilder()
.setColor(0xF1D412)
.setTitle(body.clanwar.clan.name)
.setURL(`https://link.clashofclans.com/en?action=OpenClanProfile&tag=${tag}`)
.setDescription(`**${body.clanwar.clan.name}** Is currently in war Against **${body.clanwar.opponent.name}** clan`)
.addFields(
{name: `Team Size `, value: `${body.clanwar.teamSize}`, inline: true},
{name: `Attacks Per Memeber `, value: `${body.clanwar.attacksPerMember}`, inline: true},
{name: `Name + level`, value: `${body.clanwar.clan.name} LVL ${body.clanwar.clan.clanLevel} vs ${body.clanwar.opponent.name} LVL ${body.clanwar.opponent.clanLevel}`, inline: true},
{name: `Preporation Start date`, value: `${body.prepStartStr}`, inline: true},
{name: `War Start date`, value: `${body.startStr}`, inline: true},
{name: `War End date`, value: `${body.endStr}`, inline: true},
)
.setThumbnail(body.clanwar.clan.badgeUrls.medium)
.setThumbnail(body.clanwar.opponent.badgeUrls.medium);
const NotInWarEmbed = new EmbedBuilder()
.setColor(0xF1D412)
.setTitle(`Not In War`)
.setDescription(`The Clan is currently not in war or still searching for a match!`);
const ErrorEmbed = new EmbedBuilder()
.setColor(0xFF0000)
.setTitle(`An Error Occured`)
.setDescription(`An Error Occured!\nMake sure you've provided a tag without # :\n:x: **.clan #XYZ12345**\n:white_check_mark: **.clan XYZ12345** \nIf the command still doesn't work contact staff and/or report using the .report (message) command`);
if (err)
{
message.channel.send({ embeds: [ErrorEmbed] });
return;
}
else if (body.clanwar.state == 'inWar')
{
message.channel.send({ embeds: [WarEmbed] });
console.log(`Prep: ${body.prepStartStr}`);
console.log(`Start: ${body.startStr}`);
console.log(`End: ${body.endStr}`);
return;
}
else if (body.clanwar.state == 'warEnded')
{
message.channel.send({ embeds: [WarEndedEmbed] });
console.log(`Prep: ${body.prepStartStr}`);
console.log(`Start: ${body.startStr}`);
console.log(`End: ${body.endStr}`);
return;
}
else (body.clanwar.state == 'notInWar')
{
message.channel.send({ embeds: [NotInWarEmbed] }); return;
};
});
}Editor is loading...