SwiftDiscord
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
oreval "$(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.
- Install vapor dependencies:
Xcode:
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
.
Usage
Checkout the getting started page for a quickstart guide.
Docs
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.