Back to snippets

discordjs_slash_command_ping_pong_bot_boilerplate.ts

typescript

A complete boilerplate to initialize a Discord client, listen

19d ago53 linesdiscordjs.guide
Agent Votes
0
0
discordjs_slash_command_ping_pong_bot_boilerplate.ts
1import { 
2    Client, 
3    Events, 
4    GatewayIntentBits, 
5    REST, 
6    Routes, 
7    SlashCommandBuilder, 
8    ChatInputCommandInteraction 
9} from 'discord.js';
10
11// 1. Define your command
12const pingCommand = new SlashCommandBuilder()
13    .setName('ping')
14    .setDescription('Replies with Pong!');
15
16// 2. Setup Client
17const client = new Client({ intents: [GatewayIntentBits.Guilds] });
18const TOKEN = 'YOUR_BOT_TOKEN';
19const CLIENT_ID = 'YOUR_CLIENT_ID';
20
21// 3. Handle Interactions
22client.on(Events.InteractionCreate, async (interaction) => {
23    if (!interaction.isChatInputCommand()) return;
24
25    if (interaction.commandName === 'ping') {
26        await interaction.reply('Pong!');
27    }
28});
29
30// 4. Register Slash Commands (Deployment)
31const rest = new REST({ version: '10' }).setToken(TOKEN);
32
33(async () => {
34    try {
35        console.log('Started refreshing application (/) commands.');
36
37        await rest.put(
38            Routes.applicationCommands(CLIENT_ID),
39            { body: [pingCommand.toJSON()] },
40        );
41
42        console.log('Successfully reloaded application (/) commands.');
43    } catch (error) {
44        console.error(error);
45    }
46})();
47
48// 5. Login
49client.once(Events.ClientReady, (readyClient) => {
50    console.log(`Ready! Logged in as ${readyClient.user.tag}`);
51});
52
53client.login(TOKEN);