mirror of
https://github.com/blitzkit/blitzkit.git
synced 2026-10-21 02:37:05 +02:00
feat: searchclans
This commit is contained in:
1 parent
c6f462f0d7
commit
c61877a267
5 files changed
+69
-6
No files matched your search
@@ -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')
|
||||
|
||||
@@ -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;
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
Reference in new issue
Block a user