MikkiCoding
MikkiPastel
  • Welcome!
  • 👩‍🏫👩‍💻 Introduction of Programming
    • การทำงานของคอมพิวเตอร์เบื้องต้น
    • การแปลภาษาของโปรแกรม
    • Flowchart
    • Preprocesser Directory
    • Basic Coding
  • 🐍Python for Beginner
    • แนะนำภาษา python
    • ติดตั้งโปรแกรม python ลงบน computer
    • การพิมพ์คำสั่งขั้นต้น
    • Data type และการประกาศตัวแปร
    • Comparison
    • Condition Statement
    • Loop Statement
    • การใช้ break, continue และ pass ใน statement
    • Function
    • Data structure
    • การทำงานร่วมกันกับไฟล์
    • Exception handling
    • Document และแหล่งเรียนรู้อื่นๆ
  • 🤖Discord Bot Hands-on
    • Introduction
    • Discord Bot & Example
    • Create Your First Discord Bot
      • Create Your Discord Server
      • Create Discord Bot Account
      • Bring Discord Bot to Server
    • Workshop
      • Create First Slash Command
      • Create Slash Command with Parameter
      • Return Embeds and Button
      • Webhook
    • Reference
  • 💁‍♀️Android Developer Trip
    • Android Logcat
  • 📑Content
    • Content Roadmap Rule
    • 2024
      • Content Roadmap Sprint 01/2024 (15 - 26 January)
      • Content Roadmap Sprint 02/2024 (29 January - 9 February)
    • 2023
      • Content Roadmap Sprint 01/2023 (21 May - 2 June)
      • Content Roadmap Sprint 02/2023 (5 - 16 June)
      • Content Roadmap Sprint 03/2023 (19 - 30 June)
      • Content Roadmap Sprint 04/2023 (3 - 14 July)
      • Content Roadmap Sprint 05/2023 (17 - 25 July)
      • Content Roadmap Sprint 06/2023 (31 July - 11 August)
      • Content Roadmap Sprint 07/2023 (14 - 25 August)
      • Content Roadmap Sprint 08/2023 (28 August - 8 September)
      • Content Roadmap Sprint 09/2023 (11 - 22 September)
      • Content Roadmap Sprint 10/2023 (25 September - 6 October)
      • Content Roadmap Sprint 11/2023 (9 - 20 October)
      • Content Roadmap Sprint 12/2023 (6 - 17 November)
      • Content Roadmap Sprint 13/2023 (20 November - 1 December)
      • Content Roadmap Sprint 14/2023 (6 - 22 December)
    • 2022
Powered by GitBook
On this page
Edit on GitHub
  1. Discord Bot Hands-on
  2. Workshop

Create First Slash Command

ไปที่ server.js เพิ่มโค้ดเหล่านี้กัน

// server.js
// Import dependency
const { ..., SlashCommandBuilder } = require('@discordjs/builders');
const { REST } = require('@discordjs/rest');

// Create new slash command
const commands = [
   new SlashCommandBuilder()
       .setName('ping')
       .setDescription('Replies with Pong!')
 ].map(command => command.toJSON());
 
// 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.`);
   }
});
  • SlashCommandBuilder ใช้เพิ่ม command

  • Routes กับ REST ใช้ register command ของเรา

  • สร้าง slash command โดยสร้าง SlashCommandBuilder() ขึ้นมา ใส่ชื่อ และ description ของคำสั่งนี้ว่าใช้ทำอะไร แล้วเอาทุกคำสั่งไป map เป็น json ในที่นี้ชื่อคำสั่งว่า ping

  • register command โดยการสร้าง REST ขึ้นมา แล้วใส่ token เข้าไป จากนั้นให้ put คำสั่งทั้งหมดไปยัง server ของ Discord (ทำให้ตอนที่บอทไม่ online เรายังเห็น command นั้นอยู่นั่นเอง!)

  • จัดการ reply command โดยดึงชื่อ command จาก interaction แล้วมา compare ถ้าเป็นคำสั่ง ping ให้เอาเวลาตอนนี้หักกับตอนพิมพ์คำสั่ง แล้ว return เป็น text กลับไป

จากนั้นพิมพ์คำสั่งนี้ เพื่อ deploy ขึ้นไป

npm run dev

เมื่อ deploy เรียบร้อยแล้วกลับไปดูที่ server พบว่าคำสั่งนี้มีให้เราใช้งานแล้ว

ผลที่ได้

เพิ่มเติม ถ้าบางครั้งเราต้องรอผลลัพธ์มากกว่า 3 วินาที ใช้คำสั่งนี้ได้นะ user จะได้ไม่รอนานเกินไป

// waiting response long time
await interaction.deferReply();
await interaction.editReply(`Pong! This message had a latency of ${timeTaken}ms.`;

Last updated 5 months ago

🤖