diff --git a/src/gateway/opcodes/RequestChannelStatuses.ts b/src/gateway/opcodes/RequestChannelStatuses.ts new file mode 100644 index 000000000..9642b544a --- /dev/null +++ b/src/gateway/opcodes/RequestChannelStatuses.ts @@ -0,0 +1,35 @@ +/* + Spacebar: A FOSS re-implementation and extension of the Discord.com backend. + Copyright (C) 2025 Spacebar and Spacebar Contributors + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published + by the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +import { WebSocket, Payload, OPCODES, Send } from "@spacebar/gateway"; + +export async function onRequestChannelStatuses(this: WebSocket, { d }: Payload) { + const startTime = Date.now(); + // Schema validation can only accept either string or array, so transforming it here to support both + if (!d.guild_id) throw new Error('"guild_id" is required'); + + // TODO: implement + await Send(this, { + op: OPCODES.Dispatch, + t: "CHANNEL_STATUSES", + d: { + guild_id: d.guild_id, + channels: [] + }, + }); +} diff --git a/src/gateway/opcodes/Resume.ts b/src/gateway/opcodes/Resume.ts index 3e43d648a..fc6d8a7b7 100644 --- a/src/gateway/opcodes/Resume.ts +++ b/src/gateway/opcodes/Resume.ts @@ -20,7 +20,7 @@ import { WebSocket } from "@spacebar/gateway"; import { Send } from "../util/Send"; export async function onResume(this: WebSocket) { - console.log("Got Resume -> cancel not implemented"); + // console.log("Got Resume -> cancel not implemented"); await Send(this, { op: 9, d: false, diff --git a/src/gateway/opcodes/index.ts b/src/gateway/opcodes/index.ts index 0955fe519..7e6416cb7 100644 --- a/src/gateway/opcodes/index.ts +++ b/src/gateway/opcodes/index.ts @@ -29,6 +29,7 @@ import { onStreamCreate } from "./StreamCreate"; import { onStreamDelete } from "./StreamDelete"; import { onStreamWatch } from "./StreamWatch"; import { onGuildSync } from "./GuildSync"; +import { onRequestChannelStatuses } from "./RequestChannelStatuses"; export type OPCodeHandler = (this: WebSocket, data: Payload) => unknown; @@ -49,6 +50,7 @@ export default { 18: onStreamCreate, 19: onStreamDelete, 20: onStreamWatch, + 36: onRequestChannelStatuses, 37: onGuildSubscriptionsBulk, 40: onHeartbeat, // same as 1, except with extra data 41: () => {}, // "Update Time Spent Session ID", just tracking nonsense