feat: sending messages works
This commit is contained in:
@@ -35,27 +35,28 @@ public struct Intents: OptionSet, Sendable {
|
||||
}
|
||||
|
||||
public struct GetGatewayResponse: Codable, Sendable {
|
||||
let url: URL
|
||||
let shards: Int
|
||||
let session_start_limit: SessionStartLimit
|
||||
public let url: URL
|
||||
public let shards: Int
|
||||
public let session_start_limit: SessionStartLimit
|
||||
}
|
||||
|
||||
public struct SessionStartLimit: Codable, Sendable {
|
||||
let total: Int
|
||||
let remaining: Int
|
||||
let reset_after: Int
|
||||
let max_concurrency: Int
|
||||
public let total: Int
|
||||
public let remaining: Int
|
||||
public let reset_after: Int
|
||||
public let max_concurrency: Int
|
||||
}
|
||||
|
||||
public enum GatewayPayload: Decodable, Sendable {
|
||||
case hello(HelloPayload)
|
||||
case hello(GatewayHello)
|
||||
case messageCreate(MessageCreate)
|
||||
}
|
||||
|
||||
public struct GatewayMessage: Decodable, Sendable {
|
||||
let op: Int
|
||||
let d: GatewayPayload?
|
||||
let s: Int?
|
||||
let t: String?
|
||||
public let op: Int
|
||||
public let d: GatewayPayload?
|
||||
public let s: Int?
|
||||
public let t: String?
|
||||
|
||||
enum CodingKeys: String, CodingKey {
|
||||
case t
|
||||
@@ -71,8 +72,11 @@ public struct GatewayMessage: Decodable, Sendable {
|
||||
t = try container.decode(String?.self, forKey: .t)
|
||||
switch op {
|
||||
case 10:
|
||||
let hello = try container.decode(HelloPayload.self, forKey: .d)
|
||||
let hello = try container.decode(GatewayHello.self, forKey: .d)
|
||||
d = .hello(hello)
|
||||
case 0 where t == "MESSAGE_CREATE":
|
||||
let messageCreate = try container.decode(MessageCreate.self, forKey: .d)
|
||||
d = .messageCreate(messageCreate)
|
||||
default:
|
||||
d = nil
|
||||
break
|
||||
@@ -87,7 +91,46 @@ public struct GatewayMessage: Decodable, Sendable {
|
||||
}
|
||||
}
|
||||
|
||||
public struct HelloPayload: Codable, Sendable {
|
||||
public struct GatewayHello: Codable, Sendable {
|
||||
let heartbeat_interval: Int
|
||||
}
|
||||
|
||||
public struct CreateMessageReq: Codable, Sendable {
|
||||
public init(content: String? = nil, message_reference: MessageRefrence? = nil) {
|
||||
self.content = content
|
||||
self.message_reference = message_reference
|
||||
}
|
||||
|
||||
public let content: String?
|
||||
public let message_reference: MessageRefrence?
|
||||
}
|
||||
|
||||
public struct MessageRefrence: Codable, Sendable {
|
||||
public init(type: Int? = nil, message_id: String? = nil, channel_id: String? = nil, guild_id: String? = nil) {
|
||||
self.type = type
|
||||
self.message_id = message_id
|
||||
self.channel_id = channel_id
|
||||
self.guild_id = guild_id
|
||||
}
|
||||
|
||||
let type: Int?
|
||||
let message_id: String?
|
||||
let channel_id: String?
|
||||
let guild_id: String?
|
||||
}
|
||||
|
||||
public struct MessageCreate: Codable, Sendable {
|
||||
public let id: String
|
||||
public let channel_id: String
|
||||
public let guild_id: String?
|
||||
public let author: User?
|
||||
public let content: String
|
||||
public let mentions: [User]
|
||||
}
|
||||
|
||||
|
||||
public struct User: Codable, Sendable {
|
||||
public let id: String?
|
||||
public let bot: Bool?
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user