libdiscord.h (2541B)
1 #ifndef LIBDISCORD_H 2 #define LIBDISCORD_H 3 4 #define LIBDISCORD_VERSION_MAJOR "0" 5 #define LIBDISCORD_VERSION_MINOR "1" 6 #define LIBDISCORD_VERSION_PATCH "0" 7 8 #define LIBDISCORD_VERSION \ 9 LIBDISCORD_VERSION_MAJOR "." \ 10 LIBDISCORD_VERSION_MINOR "." \ 11 LIBDISCORD_VERSION_PATCH 12 13 #include <stddef.h> 14 #include <stdint.h> 15 16 struct discord_api_event { 17 char const *ptr; 18 int len; 19 }; 20 21 enum discord_gateway_opcode { 22 DISCORD_GATEWAY_DISPATCH, 23 DISCORD_GATEWAY_HEARTBEAT, 24 DISCORD_GATEWAY_IDENTIFY, 25 DISCORD_GATEWAY_PRESENCE_UPDATE, 26 DISCORD_GATEWAY_VOICE_STATE_UPDATE, 27 DISCORD_GATEWAY_RESUME, 28 DISCORD_GATEWAY_RECONNECT, 29 DISCORD_GATEWAY_REQUEST_GUILD_MEMBERS, 30 DISCORD_GATEWAY_INVALID_SESSION, 31 DISCORD_GATEWAY_HELLO, 32 DISCORD_GATEWAY_HEARTBEAT_ACK, 33 DISCORD_GATEWAY_REQUEST_SOUNDBOARD_SOUNDS, 34 }; 35 36 enum discord_gateway_error { 37 DISCORD_GATEWAY_UNKNOWN_ERROR = 4000, 38 DISCORD_GATEWAY_UNKNOWN_OPCODE = 4001, 39 DISCORD_GATEWAY_DECODE_ERROR = 4002, 40 DISCORD_GATEWAY_NOT_AUTHENTICATED = 4003, 41 DISCORD_GATEWAY_AUTHENTICATION_FAILED = 4004, 42 DISCORD_GATEWAY_ALREADY_AUTHENTICATED = 4005, 43 /* reserved */ 44 DISCORD_GATEWAY_INVALID_SEQ = 4007, 45 DISCORD_GATEWAY_RATE_LIMITED = 4008, 46 DISCORD_GATEWAY_SESSION_TIMED_OUT = 4009, 47 DISCORD_GATEWAY_INVALID_SHARD = 4010, 48 DISCORD_GATEWAY_SHARDING_REQUIRED = 4011, 49 DISCORD_GATEWAY_INVALID_API_VERSION = 4012, 50 DISCORD_GATEWAY_INVALID_INTENTS = 4013, 51 DISCORD_GATEWAY_DISALLOWED_INTENTS = 4014, 52 }; 53 54 struct discord_gateway_event { 55 char const *ptr; 56 int len; 57 }; 58 59 struct discord_voice_event { 60 char const *ptr; 61 int len; 62 }; 63 64 enum discord_event_type { 65 DISCORD_EVENT_API, 66 DISCORD_EVENT_GATEWAY, 67 DISCORD_EVENT_VOICE, 68 }; 69 70 union discord_event_tag { 71 struct discord_api_event api; 72 struct discord_gateway_event gateway; 73 struct discord_voice_event voice; 74 }; 75 76 struct discord_event { 77 enum discord_event_type type; 78 union discord_event_tag tag; 79 }; 80 81 struct discord; 82 83 size_t 84 discord_sizeof(void); 85 86 int 87 discord_init(struct discord *ctx, void *mem, size_t len); 88 89 void 90 discord_free(struct discord *ctx); 91 92 int 93 discord_connect_gateway(struct discord *ctx); 94 95 int 96 discord_connect_voice(struct discord *ctx); 97 98 int 99 discord_poll_events(struct discord *ctx, 100 struct discord_event *evs, size_t cap); 101 102 // discord api calls 103 // ======================================================================== 104 105 // discord gateway calls 106 // ======================================================================== 107 108 // discord voice calls 109 // ======================================================================== 110 111 #endif /* LIBDISCORD_H */