Entonces, he estado trabajando en este bot de discord que toma los comandos '/' para mostrar detalles sobre la jugada más reciente del usuario (¡para el juego osu!), su jugada principal, etc. Sin embargo, he estado luchando con tratando de tomar argumentos usando los comandos '/' para intentar agregar su nombre de usuario a la base de datos del bot. Entiendo cómo abordar la adición de su nombre de usuario en una base de datos, pero no entiendo cómo obtener un argumento que envían además del comando /set. Por ejemplo, quiero recuperar el String 'David' si dan el comando '/set David'
Aquí está mi index.js que es de la documentación de discord.js v13.0:
const fs = require('node:fs'); const { Client, Collection, Intents, User } = require('discord.js'); const { token } = require('./config.json'); const fetch = require('node-fetch'); const client = new Client({ intents: [Intents.FLAGS.GUILDS] }); client.commands = new Collection(); const commandFiles = fs.readdirSync('./commands').filter(file => file.endsWith('.js')); for (const file of commandFiles) { const command = require(`./commands/${file}`); client.commands.set(command.data.name, command); } client.once('ready', () => { console.log('Ready!'); }); client.on('interactionCreate', async interaction => { if (!interaction.isCommand()) return; const command = client.commands.get(interaction.commandName); if (!command) return; try { await command.execute(interaction); } catch (error) { console.error(error); await interaction.reply({ content: 'There was an error while executing this command!', ephemeral: true }); } }); client.login(token);¡Y aquí está el código básico para el archivo de comando donde quiero que el usuario de Discord dé su osu! nombre de usuario como argumento:
const { SlashCommandBuilder } = require('@discordjs/builders'); const { v1, auth } = require('osu-api-extended'); const { Client, Intents, MessageEmbed } = require('discord.js'); module.exports = { data: new SlashCommandBuilder() .setName('set') .setDescription('Allows the user to add their osu! username onto the bot\'s system'), async execute(interaction) { }, };Simple. Echa un vistazo a los documentos .
const arg = interaction.options.getString("insert argument name here"); Ese es el formato básico para obtener el valor de un argumento String . Si tiene un tipo diferente de argumento, como entero o booleano, usaría getInteger() o getBoolean() respectivamente en lugar de getString() . Los métodos para cada tipo diferente de argumento están completamente documentados aquí .
Como un ejemplo más específico, supongamos que tiene un comando como este: /set <username> , donde el comando se llama "set" y el argumento se llama "username". Así es como obtendría el valor de nombre de usuario en esa instancia:
const username = interaction.options.getString("username");Para preguntas sobre cómo hacer acciones básicas de discord.js como esta, recomendaría echar un vistazo a la documentación oficial de djs antes de hacer una pregunta aquí. Los documentos siempre tendrán la respuesta a tales preguntas y, por lo general, esas respuestas no son demasiado difíciles de encontrar.