Discord.swift
GitHub Repository
  • 👋Discord.swift
  • Overview
    • 💡Getting Started
    • 🛠️Creating a Project
    • ⬇️Installing the Package
    • 🤖Basic Bot
  • Resources
    • 📚Documentation
    • 🗂️Changelog
Powered by GitBook
On this page
  • Responding to a message
  • Slash Commands
  1. Overview

Basic Bot

Here are the basics to get your bot up and running.

PreviousInstalling the PackageNextDocumentation

Last updated 1 year ago

Once you're done Creating a Project and the process of Installing the Package is complete, your project should look like this. If you're using an executable, it will look like .

The next step is to import the library so we can get your bot online. You'll need your token for this. If you didn't save it somewhere, don't fret. Head to and reset your token. Once you have your token, run the following code and you'll see your bot come online.

import Discord

let bot = Bot(token: "<your token>", intents: Intents.default)
bot.run()

It's that simple. Even though it's online, it doesn't do much at the moment so lets change that. Lets have your bot respond to a simple message.

Responding to a message

The library comes with the EventListener class. This is used to listen to a handful of events that can be dispatched by Discord. This is how you add an event listener.

import Discord

let bot = Bot(token: "<your token>", intents: Intents.default)

class MyListener : EventListener {
    override func onMessageCreate(message: Message) async {
        // Don't respond to our own message
        guard !message.author.isBot else {
            return
        }

        if message.content == "hi swifty" {
            try! await message.channel.send("Hello!")
        }
    }
}

try! bot.addListeners(MyListener(name: "example"))
bot.run()

When you send a message in a channel, you should get a response.

Slash Commands

Discord.swift doesn't support the old format of text commands (!command). It utilizes Discords feature rich, UI based slash commands (/command). Lets create one!

import Discord

let bot = Bot(token: "<your token>", intents: Intents.default)

bot.addSlashCommand(
    name: "example",
    description: "Example command",
    guildId: 123456789012345678,
    onInteraction: { interaction in
        try! await interaction.respondWithMessage("This is an example")
    }
)

try! await bot.syncApplicationCommands() // Only needs to be done once
bot.run()

Once you've executed the above code, it should show up in your server like so.

When you've used the command, it will produce the following.

🤖
Step 3
Step 2a