Create Slash Command with Parameter
ใน Github repo นี้มีไฟล์ json ที่ชื่อว่า animal.json
เตรียมไว้ให้ เราจะนำไฟล์นี้มาเล่นกัน
กลับไปที่ server.js
เรามาเพิ่มคำสั่งใหม่กัน
// server.js
// Import dependency
const { ..., SlashCommandBuilder } = require('@discordjs/builders');
const { REST } = require('@discordjs/rest');
// Create slash command
const commands = [
new SlashCommandBuilder()
.setName('ping')
.setDescription('Replies with Pong!'),
// NEW: new command
new SlashCommandBuilder()
.setName('animal')
.setDescription('Encyclopedia animal')
.addStringOption(option =>
option.setName('animal')
.setDescription('role category')
.setRequired(true)
.addChoices(
{ name: 'Hippopotamus', value: 'Hippopotamus'},
{ name: 'Tiger', value: 'Tiger'},
{ name: 'Asian Elephant', value: 'Asian Elephant'},
{ name: 'Capybara', value: 'Capybara'},
)
)
].map(command => command.toJSON());
// NEW: Load json static beta
const animals = require('./data/animal.json');
// Register command
const rest = new REST({ version: '10' }).setToken(process.env.token);
rest.put(Routes.applicationGuildCommands(
process.env.clientId,
process.env.guildId
), { body: commands })
.then(() => console.log('Successfully registered application commands.'))
.catch(console.error);
// Reply command
client.on('interactionCreate', async interaction => {
if (!interaction.isChatInputCommand()) return;
const { commandName } = interaction;
if (commandName === 'ping') {
const timeTaken = Date.now() - interaction.createdTimestamp;
await interaction.reply(`Pong! This message had a latency of ${timeTaken}ms.`);
} else if (commandName === 'animal') {
// NEW: add new command
const animalInput = interaction.options.getString('animal');
const animalOutput = animals.find(animal => animal.name_en == animalInput);
await interaction.reply(animalOutput.name_th);
}
});
เราเพิ่มคำสั่งที่ชื่อว่า animal และต้องกรอก parameter ด้วย 4 ตัวเลือก คือ Hippopotamus, Tiger, Asian Elephant และ Capybara
เอา
animal.json
เข้ามาเพื่อเรียกใช้ข้อมูลเพิ่ม condition การจัดการคำสั่ง animal โดยเราดึง parameter ที่ user ใส่เข้ามา จากนั้นดึงข้อมูลจาก
animal.json
แล้วมาเทียบชื่อ จากนั้นให้ bot reply เป็นชื่อสัตว์ภาษาไทยออกมา
เมื่อ code ทำงานใหม่ กลับไปดูที่ Discord พบว่าบอทของเราเพิ่มคำสั่ง animal มาแล้วพร้อมตัวเลือกทั้ง 4

Last updated