feat: searchclans

This commit is contained in:
TresAbhi committed 2023-05-20 01:37:18 +00:00
1 parent c6f462f0d7
commit c61877a267
5 files changed
+69 -6

No files matched your search

+2 -2
View File
@@ -5,7 +5,7 @@ import clanAutocomplete from '../core/autocomplete/clan.js';
import getBlitzClan from '../core/blitz/getBlitzClan.js';
import getWargamingResponse from '../core/blitz/getWargamingResponse.js';
import cmdName from '../core/interaction/cmdName.js';
import addClanOption from '../core/options/addClanOption.js';
import addClanChoices from '../core/options/addClanChoices.js';
import { args } from '../core/process/args.js';
import { CommandRegistry } from '../events/interactionCreate.js';
import { AccountInfo } from '../types/accountInfo.js';
@@ -21,7 +21,7 @@ export default {
command: new SlashCommandBuilder()
.setName(cmdName('inactive'))
.setDescription('Lists all inactive players')
.addStringOption(addClanOption)
.addStringOption(addClanChoices)
.addNumberOption((option) =>
option
.setName('threshold')
+57
View File
@@ -0,0 +1,57 @@
import { SlashCommandBuilder } from 'discord.js';
import markdownEscape from 'markdown-escape';
import { BLITZ_SERVERS, BlitzServer } from '../constants/servers.js';
import getWargamingResponse from '../core/blitz/getWargamingResponse.js';
import cmdName from '../core/interaction/cmdName.js';
import sklldEmbed from '../core/interaction/sklldEmbed.js';
import addClanChoices from '../core/options/addClanChoices.js';
import addServerChoices from '../core/options/addServerChoices.js';
import { args } from '../core/process/args.js';
import { CommandRegistry } from '../events/interactionCreate.js';
import { ClanList } from '../types/clanList.js';
export default {
inProduction: true,
inDevelopment: true,
inPublic: true,
command: new SlashCommandBuilder()
.setName(cmdName('searchclans'))
.setDescription('Search clans')
.addStringOption(addServerChoices)
.addStringOption((option) => addClanChoices(option).setAutocomplete(false))
.addIntegerOption((option) =>
option
.setName('limit')
.setDescription('The size of the search result (default: 25)')
.setMinValue(1)
.setMaxValue(100),
),
async execute(interaction) {
const server = interaction.options.getString('server') as BlitzServer;
const clan = interaction.options.getString('clan')!;
const limit = interaction.options.getInteger('limit') ?? 25;
const clanList = await getWargamingResponse<ClanList>(
`https://api.wotblitz.${server}/wotb/clans/list/?application_id=${args['wargaming-application-id']}&search=${clan}&limit=${limit}`,
);
if (!clanList) return;
await interaction.editReply({
embeds: [
sklldEmbed(
`Clan search for "${markdownEscape(clan)}" in ${
BLITZ_SERVERS[server]
}`,
clanList.length === 0
? 'No clans found.'
: `\`\`\`\n${clanList
.map((clan) => `${clan.name} [${clan.tag}]`)
.join('\n')}\n\`\`\``,
),
],
});
console.log(`Clan search results for "${clan}"`);
},
} satisfies CommandRegistry;
+7 -2
View File
@@ -1,6 +1,7 @@
import { EmbedBuilder, SlashCommandBuilder } from 'discord.js';
import markdownEscape from 'markdown-escape';
import { SKILLED_COLOR } from '../constants/colors.js';
import { BLITZ_SERVERS, BlitzServer } from '../constants/servers.js';
import getWargamingResponse from '../core/blitz/getWargamingResponse.js';
import cmdName from '../core/interaction/cmdName.js';
import addServerChoices from '../core/options/addServerChoices.js';
@@ -30,7 +31,7 @@ export default {
),
async execute(interaction) {
const server = interaction.options.getString('server')!;
const server = interaction.options.getString('server') as BlitzServer;
const name = interaction.options.getString('username')!;
const limit = interaction.options.getInteger('limit') ?? 25;
const players = await getWargamingResponse<AccountList>(
@@ -42,7 +43,11 @@ export default {
embeds: [
new EmbedBuilder()
.setColor(SKILLED_COLOR)
.setTitle(`Player search results for "${markdownEscape(name)}"`)
.setTitle(
`Player search for "${markdownEscape(name)}" in ${
BLITZ_SERVERS[server]
}`,
)
.setDescription(
`\`\`\`${
players.length === 0
+1 -1
View File
@@ -34,7 +34,7 @@ export default {
await interaction.editReply({
embeds: [
sklldEmbed(
`Tank search results for "${markdownEscape(tank)}"`,
`Tank search for "${markdownEscape(tank)}"`,
results.length === 0
? 'No tanks found.'
: `\`\`\`\n${results.join('\n')}\n\`\`\``,
@@ -1,9 +1,10 @@
import { SlashCommandStringOption } from 'discord.js';
export default function addClanOption(option: SlashCommandStringOption) {
export default function addClanChoices(option: SlashCommandStringOption) {
return option
.setName('clan')
.setDescription('The clan name or tag you are checking')
.setAutocomplete(true)
.setMinLength(2)
.setRequired(true);
}