3.4 KiB
3.4 KiB
commands to run
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
event coverage roadmap
- application_command_permissions_update | ❌
- auto_moderation_rule_create | ❌
- auto_moderation_rule_update | ❌
- auto_moderation_rule_delete | ❌
- auto_moderation_action_execution | ❌
- channel_create | ❌
- channel_update | ❌
- channel_delete | ❌
- channel_pins_update | ❌
- thread_create | ❌
- thread_update | ❌
- thread_delete | ❌
- thread_list_sync | ❌
- thread_member_update | ❌
- thread_members_update | ❌
- guild_audit_log_entry_create | ❌
- guild_create | ❌
- guild_update | ❌
- guild_delete | ❌
- guild_ban_add | ❌
- guild_ban_remove | ❌
- guild_emojis_update | ❌
- guild_stickers_update | ❌
- guild_integrations_update | ❌
- guild_member_add | ❌
- guild_member_remove | ❌
- guild_member_update | ❌
- guild_members_chunk | ❌
- guild_role_create | ❌
- guild_role_update | ❌
- guild_role_delete | ❌
- guild_scheduled_event_create | ❌
- guild_scheduled_event_update | ❌
- guild_scheduled_event_delete | ❌
- guild_scheduled_event_user_add | ❌
- guild_scheduled_event_user_remove | ❌
- integration_create | ❌
- integration_update | ❌
- integration_delete | ❌
- interaction_create | ❌
- invite_create | ❌
- invite_delete | ❌
- message_create: ?*const fn (message: Discord.Message) void | ✅
- message_update | ❌
- message_delete | ❌
- message_delete_bulk | ❌
- message_reaction_add | ❌
- message_reaction_remove | ❌
- message_reaction_remove_all | ❌
- message_reaction_remove_emoji | ❌
- presence_update | ❌
- stage_instance_create | ❌
- stage_instance_update | ❌
- stage_instance_delete | ❌
- typing_start | ❌
- user_update | ❌
- voice_channel_effect_send | ❌
- voice_state_update | ❌
- voice_server_update | ❌
- webhooks_update | ❌
- entitlement_create | ❌
- entitlement_update | ❌
- entitlement_delete | ❌
- message_poll_vote_add | ❌
- message_poll_vote_remove | ❌
- ready: ?*const fn (data: Discord.Ready) void | ✅
- resumed | ❌
- any: ?*const fn (data: []u8) void | ✅
// 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();
}