about summary refs log tree commit diff
path: root/pkg/discord/gateway/payloads.go
blob: 87c37d3373fa11a206c750e2b3986717d7e38486 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
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 ResumeCmd struct {
	Token     string `json:"token"`
	SessionID string `json:"session_id"`
	Sequence  uint64 `json:"seq"`
}

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"`
}