mirror of
https://github.com/blitzkit/blitzkit.git
synced 2026-10-25 03:29:51 +01: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 getBlitzClan from '../core/blitz/getBlitzClan.js';
|
||||||
import getWargamingResponse from '../core/blitz/getWargamingResponse.js';
|
import getWargamingResponse from '../core/blitz/getWargamingResponse.js';
|
||||||
import cmdName from '../core/interaction/cmdName.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 { args } from '../core/process/args.js';
|
||||||
import { CommandRegistry } from '../events/interactionCreate.js';
|
import { CommandRegistry } from '../events/interactionCreate.js';
|
||||||
import { AccountInfo } from '../types/accountInfo.js';
|
import { AccountInfo } from '../types/accountInfo.js';
|
||||||
@@ -21,7 +21,7 @@ export default {
|
|||||||
command: new SlashCommandBuilder()
|
command: new SlashCommandBuilder()
|
||||||
.setName(cmdName('inactive'))
|
.setName(cmdName('inactive'))
|
||||||
.setDescription('Lists all inactive players')
|
.setDescription('Lists all inactive players')
|
||||||
.addStringOption(addClanOption)
|
.addStringOption(addClanChoices)
|
||||||
.addNumberOption((option) =>
|
.addNumberOption((option) =>
|
||||||
option
|
option
|
||||||
.setName('threshold')
|
.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 { EmbedBuilder, SlashCommandBuilder } from 'discord.js';
|
||||||
import markdownEscape from 'markdown-escape';
|
import markdownEscape from 'markdown-escape';
|
||||||
import { SKILLED_COLOR } from '../constants/colors.js';
|
import { SKILLED_COLOR } from '../constants/colors.js';
|
||||||
|
import { BLITZ_SERVERS, BlitzServer } from '../constants/servers.js';
|
||||||
import getWargamingResponse from '../core/blitz/getWargamingResponse.js';
|
import getWargamingResponse from '../core/blitz/getWargamingResponse.js';
|
||||||
import cmdName from '../core/interaction/cmdName.js';
|
import cmdName from '../core/interaction/cmdName.js';
|
||||||
import addServerChoices from '../core/options/addServerChoices.js';
|
import addServerChoices from '../core/options/addServerChoices.js';
|
||||||
@@ -30,7 +31,7 @@ export default {
|
|||||||
),
|
),
|
||||||
|
|
||||||
async execute(interaction) {
|
async execute(interaction) {
|
||||||
const server = interaction.options.getString('server')!;
|
const server = interaction.options.getString('server') as BlitzServer;
|
||||||
const name = interaction.options.getString('username')!;
|
const name = interaction.options.getString('username')!;
|
||||||
const limit = interaction.options.getInteger('limit') ?? 25;
|
const limit = interaction.options.getInteger('limit') ?? 25;
|
||||||
const players = await getWargamingResponse<AccountList>(
|
const players = await getWargamingResponse<AccountList>(
|
||||||
@@ -42,7 +43,11 @@ export default {
|
|||||||
embeds: [
|
embeds: [
|
||||||
new EmbedBuilder()
|
new EmbedBuilder()
|
||||||
.setColor(SKILLED_COLOR)
|
.setColor(SKILLED_COLOR)
|
||||||
.setTitle(`Player search results for "${markdownEscape(name)}"`)
|
.setTitle(
|
||||||
|
`Player search for "${markdownEscape(name)}" in ${
|
||||||
|
BLITZ_SERVERS[server]
|
||||||
|
}`,
|
||||||
|
)
|
||||||
.setDescription(
|
.setDescription(
|
||||||
`\`\`\`${
|
`\`\`\`${
|
||||||
players.length === 0
|
players.length === 0
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ export default {
|
|||||||
await interaction.editReply({
|
await interaction.editReply({
|
||||||
embeds: [
|
embeds: [
|
||||||
sklldEmbed(
|
sklldEmbed(
|
||||||
`Tank search results for "${markdownEscape(tank)}"`,
|
`Tank search for "${markdownEscape(tank)}"`,
|
||||||
results.length === 0
|
results.length === 0
|
||||||
? 'No tanks found.'
|
? 'No tanks found.'
|
||||||
: `\`\`\`\n${results.join('\n')}\n\`\`\``,
|
: `\`\`\`\n${results.join('\n')}\n\`\`\``,
|
||||||
|
|||||||
@@ -1,9 +1,10 @@
|
|||||||
import { SlashCommandStringOption } from 'discord.js';
|
import { SlashCommandStringOption } from 'discord.js';
|
||||||
|
|
||||||
export default function addClanOption(option: SlashCommandStringOption) {
|
export default function addClanChoices(option: SlashCommandStringOption) {
|
||||||
return option
|
return option
|
||||||
.setName('clan')
|
.setName('clan')
|
||||||
.setDescription('The clan name or tag you are checking')
|
.setDescription('The clan name or tag you are checking')
|
||||||
.setAutocomplete(true)
|
.setAutocomplete(true)
|
||||||
|
.setMinLength(2)
|
||||||
.setRequired(true);
|
.setRequired(true);
|
||||||
}
|
}
|
||||||
Reference in new issue
Block a user