diff --git a/.vscode/settings.json b/.vscode/settings.json index a8952fa4a..c66629a88 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,5 +1,5 @@ { - "cSpell.words": ["Abhi"], + "cSpell.words": ["Abhi", "SKLLD", "wargaming"], "deno.enable": false, "deno.unstable": false } diff --git a/config.template.json b/config.template.json index 5b0d61035..ac7163893 100644 --- a/config.template.json +++ b/config.template.json @@ -1,5 +1,7 @@ { - "token": "", - "clientId": "", - "guildId": "" + "discord_token": "", + "discord_client_id": "", + "discord_guild_id": "", + "discord_verify_channel": "", + "wargaming_application_id": "" } diff --git a/src/commands/verify.ts b/src/commands/verify.ts index 923278aaf..8fa3d233c 100644 --- a/src/commands/verify.ts +++ b/src/commands/verify.ts @@ -1,15 +1,80 @@ -import { CommandInteraction, SlashCommandBuilder } from 'discord.js'; +import { + CommandInteraction, + EmbedBuilder, + SlashCommandBuilder, +} from 'discord.js'; +import config from '../../config.json' assert { type: 'json' }; -export function execute(interaction: CommandInteraction) { - interaction.reply( - //@ts-ignore - `you said your blitz username was ${interaction.options.getString( - 'ign', - )} in ${ +export async function execute(interaction: CommandInteraction) { + const response = (await fetch( + `https://api.wotblitz.${ //@ts-ignore - interaction.options.getString('server') - }`, - ); + interaction.options.getString('server') === 'na' + ? 'com' + : //@ts-ignore + interaction.options.getString('server') + }/wotb/account/list/?application_id=${ + config.wargaming_application_id + //@ts-ignore + }&search=${interaction.options.getString('ign')}`, + ).then((response) => response.json())) as { + data: { nickname: string; account_id: number }[]; + }; + + if (response.data.length === 1) { + //@ts-ignore + if (response.data[0].nickname === interaction.options.getString('ign')) { + interaction.reply({ + embeds: [ + new EmbedBuilder() + .setColor('#82ff29') + .setTitle(`${interaction.user.username} is verified`) + .setDescription( + `The user is now verified as ${ + //@ts-ignore + interaction.options.getString('ign') + }`, + ), + ], + }); + } else { + interaction.reply({ + embeds: [ + new EmbedBuilder() + .setColor('#ff4747') + .setTitle(`Account not found`) + .setDescription( + //@ts-ignore + `No exact matches were found for "${interaction.options.getString( + 'ign', + )}" in the ${ + //@ts-ignore + interaction.options.getString('server') + } server. Are you sure you have no typos? Capitalization matters.`, + ), + ], + }); + } + } else { + interaction.reply({ + embeds: [ + new EmbedBuilder() + .setColor('#ff4747') + .setTitle(`Account not found`) + .setDescription( + //@ts-ignore + `Are you sure your username is "${interaction.options.getString( + 'ign', + )}" in the ${ + //@ts-ignore + interaction.options.getString('server') + } server? I found ${ + response.data.length < 100 ? response.data.length : 'over 100' + } accounts. Try re-running the command.`, + ), + ], + }); + } } export const data = new SlashCommandBuilder() diff --git a/src/index.ts b/src/index.ts index 2ce62e049..e14672cf1 100644 --- a/src/index.ts +++ b/src/index.ts @@ -22,6 +22,8 @@ client.on('ready', (c) => { }); client.on('guildMemberAdd', async (member) => { + console.log(`${member.user.tag} joined`); + //@ts-ignore await member.guild.channels.cache.get(config.discord_verify_channel)?.send({ embeds: [