Swiftpack.co -  nuclearace/SwiftDiscord as Swift Package
Swiftpack.co is a collection of thousands of indexed Swift packages. Search packages.
Discord API Client for Swift
.package(url: "https://github.com/nuclearace/SwiftDiscord.git", from: "v9.0.0")


Build Status

A Discord API client for Swift.

  • Features:
    • Sending and receiving voice.
    • macOS, iOS, and Linux** support.
    • Bot and User account support.
    • REST API separate from client. You can use the REST API separately to build your own client if you wish.
    • Configurable sharding.

** - Linux stability is currently limited to the stability of open source Foundation, but in thoery should support everything.

  • Requirements:

    • libopus
    • libsodium
    • Swift 3
  • Recommendend:

    • ffmpeg (Without FFmpeg you must send raw audio)
  • Installing and Building (Linux and macOS):

    • Install vapor dependencies:
      • brew tap vapor/tap && brew install ctls or eval "$(curl -sL https://apt.vapor.sh)"; sudo apt-get install vapor;
    • Create your Swift Package Manager project
    • Add .package(url: "https://github.com/nuclearace/SwiftDiscord", .upToNextMajor(from: "6.0.0")) to your dependencies in Package.swift
    • Add import SwiftDiscord to files you wish to use the module in.
    • Run swift build -Xlinker -L/usr/local/lib -Xlinker -lopus -Xcc -I/usr/local/include. The Xlinker options are needed to tell the package manager where to find the libsodium and opus libraries that were installed through Homebrew. The Xcc option tells clang where to find the headers for opus.


If you wish to use Xcode with your Swift Package Manager project, you can do swift package generate-xcodeproj. However after doing that, you'll have to make a change to SwiftDiscord's build settings. Just like when compiling from the command line, we have to tell Xcode where to find libsodium and libopus. This can be done by adding /usr/local/lib to the library search paths and /usr/local/include to the header search paths. This should be done for the SwiftDiscord and DiscordOpus targets. The DiscordOpus target also needs the -lopus option in "Other Linker Flags".


Checkout the getting started page for a quickstart guide.


Docs are generated with jazzy using the magical command:

jazzy --xcodebuild-arguments -project,SwiftDiscord.xcodeproj/,-scheme,SwiftDiscord-Package --documentation=UsageDocs/*.md --theme fullwidth --module SwiftDiscord

Must have setup an Xcode project

Why no CocoaPods?

I hate CocoaPods and the Swift Package Manager makes it easy to do system modules.


Stars: 106
Last commit: 2 weeks ago

Ad: Job Offers

iOS Software Engineer @ Perry Street Software
Perry Street Software is Jack’d and SCRUFF. We are two of the world’s largest gay, bi, trans and queer social dating apps on iOS and Android. Our brands reach more than 20 million members worldwide so members can connect, meet and express themselves on a platform that prioritizes privacy and security. We invest heavily into SwiftUI and using Swift Packages to modularize the codebase.

Swiftpack is being maintained by Petr Pavlik | @ptrpavlik | @swiftpackco | API