53 lines
1.5 KiB
Markdown
53 lines
1.5 KiB
Markdown
|
|
# commands to run
|
|
```bash
|
|
wget https://github.com/madler/zlib/releases/download/v1.2.13/zlib-1.2.13.tar.gz
|
|
tar xvf zlib-1.2.13.tar.gz
|
|
rm zlib-1.2.13.tar.gz
|
|
mv zlib-1.2.13 zlib
|
|
mv zlib lib/zlib
|
|
git clone https://github.com/yuzudev/websocket.zig.git ./lib/websocket.zig/
|
|
git clone https://github.com/yuzudev/zig-tls12 ./lib/zig-tls12/
|
|
git clone https://github.com/jetzig-framework/zmpl.git ./lib/zmpl/
|
|
```
|
|
or simply run ./install.sh
|
|
|
|
# features
|
|
* scalable
|
|
* 100% API coverage, fully typed
|
|
* faster than any other Discord library
|
|
* language-agnostic
|
|
* implemented from scratch
|
|
* parses payloads using zlib
|
|
|
|
```zig
|
|
// Sample code
|
|
const Session = @import("discord.zig").Session;
|
|
const Discord = @import("discord.zig").Discord;
|
|
const Intents = Discord.Intents;
|
|
const std = @import("std");
|
|
|
|
const token = "Bot MTI5ODgzOTgzMDY3OTEzMDE4OA...";
|
|
|
|
fn message_create(message: Discord.Message) void {
|
|
// do whatever you want
|
|
std.debug.print("captured: {?s}\n", .{message.content});
|
|
}
|
|
|
|
pub fn main() !void {
|
|
var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator);
|
|
defer arena.deinit();
|
|
const allocator = arena.allocator();
|
|
|
|
var handler = try Session.init(allocator, .{
|
|
.token = token,
|
|
.intents = Intents.fromRaw(37379),
|
|
.run = Session.GatewayDispatchEvent{ .message_create = &message_create },
|
|
});
|
|
errdefer handler.deinit();
|
|
|
|
const t = try std.Thread.spawn(.{}, Session.readMessage, .{ &handler, null });
|
|
defer t.join();
|
|
}
|
|
```
|