package gateway import ( "jinx/pkg/discord/entities" ) type GatewayOp uint8 const ( OP_DISPATCH GatewayOp = 0 OP_HEARTBEAT GatewayOp = 1 OP_IDENTIFY GatewayOp = 2 OP_PRESENCE_UPDATE GatewayOp = 3 OP_VOICE_STATE_UPDATE GatewayOp = 4 OP_RESUME GatewayOp = 6 OP_RECONNECT GatewayOp = 7 OP_REQUEST_GUILD_MEMBERS GatewayOp = 8 OP_INVALID_SESSION GatewayOp = 9 OP_HELLO GatewayOp = 10 OP_HEARTBEAT_ACK GatewayOp = 11 ) type Payload[D any] struct { Op GatewayOp `json:"op"` Data D `json:"d,omitempty"` Sequence uint64 `json:"s,omitempty"` EventName string `json:"t,omitempty"` } type IdentifyCmd struct { Token string `json:"token"` Intents uint64 `json:"intents"` Properties IdentifyProperties `json:"properties"` } type HelloEvent struct { HeartbeatInterval uint64 `json:"heartbeat_interval"` } type ReadyEvent struct { Version uint64 `json:"v"` User entities.User `json:"user"` Guilds []entities.Guild `json:"guilds"` SessionID string `json:"session_id"` Shard []int `json:"shard"` } type MessageCreateEvent entities.Message type IdentifyProperties struct { OS string `json:"$os"` Browser string `json:"$browser"` Device string `json:"$device"` }