mirror of
https://github.com/discordeno/discordeno.git
synced 2026-06-16 03:18:17 +00:00
28 lines
1.3 KiB
TypeScript
28 lines
1.3 KiB
TypeScript
import { rest } from "../../rest/rest.ts";
|
|
import { UpdateOthersVoiceState } from "../../types/guilds/update_others_voice_state.ts";
|
|
import type { UpdateSelfVoiceState } from "../../types/guilds/update_self_voice_state.ts";
|
|
import { endpoints } from "../../util/constants.ts";
|
|
import { hasOwnProperty, snakelize } from "../../util/utils.ts";
|
|
|
|
/**
|
|
* Updates the a user's voice state, defaults to the current user
|
|
* Caveats:
|
|
* - `channel_id` must currently point to a stage channel.
|
|
* - User must already have joined `channel_id`.
|
|
* - You must have the `MUTE_MEMBERS` permission. But can always suppress yourself.
|
|
* - When unsuppressed, non-bot users will have their `request_to_speak_timestamp` set to the current time. Bot users will not.
|
|
* - You must have the `REQUEST_TO_SPEAK` permission to request to speak. You can always clear your own request to speak.
|
|
* - You are able to set `request_to_speak_timestamp` to any present or future time.
|
|
* - When suppressed, the user will have their `request_to_speak_timestamp` removed.
|
|
*/
|
|
export async function updateBotVoiceState(
|
|
guildId: bigint,
|
|
options: UpdateSelfVoiceState | ({ userId: bigint } & UpdateOthersVoiceState)
|
|
) {
|
|
return await rest.runMethod(
|
|
"patch",
|
|
endpoints.UPDATE_VOICE_STATE(guildId, hasOwnProperty(options, "userId") ? options.userId : undefined),
|
|
snakelize(options)
|
|
);
|
|
}
|