Api Reference
Client
Client methods
client.tstypescript
import { createPresenceClient } from "@iconical/presencekit";
const client = createPresenceClient();createPresenceClient() takes no arguments. It returns four methods:
| Method | Returns | Purpose |
|---|---|---|
getPresence(userId, request?) | Promise | Fetch one opted-in member |
getPresences(userIds, request?) | Promise | Fetch 1–25 IDs in one request |
subscribePresence(userId, observer, options?) | () => void | Subscribe to one ID, returns cleanup |
subscribePresences(userIds, observer, options?) | () => void | Subscribe to 1–25 IDs, returns cleanup |
getPresence(userId, request?)
get-presence.tstypescript
const controller = new AbortController();
const person = await client.getPresence("123456789012345678", {
signal: controller.signal,
});
console.log(person.profile.displayName);
console.log(person.presence?.status ?? "Pending");
// controller.abort() if the operation is still in flightuserId must be a 17–20-digit Discord snowflake. The result includes availability, profile, presence, and spotify. The SDK does not cache this REST fetch: requests use cache: "no-store".
getPresences(userIds, request?)
get-presences.tstypescript
const roster = await client.getPresences([
"123456789012345678",
"234567890123456789",
]);
console.log(Object.keys(roster.presences));
console.log(roster.presences["123456789012345678"]?.presence?.status);Inputs are deduplicated and must contain between 1 and 25 valid IDs. roster.presences is an object keyed by Discord ID, not an array. Users without authorized data are omitted.
Errors
handling-errors.tstypescript
import { PresenceKitError } from "@iconical/presencekit";
try {
await client.getPresence("123456789012345678");
} catch (error) {
if (error instanceof PresenceKitError) {
console.error(error.code, error.status);
}
}Invalid IDs throw a regular Error. Network/abort errors can also occur; don't assume every caught error is a PresenceKitError.
For ongoing updates see subscriptions.
Was this page helpful?