Api Reference
Helpers
Utility helpers
These pure helpers make Discord activity data easier to display. Import them from @iconical/presencekit.
Activity types
activity-types.tstypescript
import { DiscordActivityType } from "@iconical/presencekit";
DiscordActivityType.Playing; // 0
DiscordActivityType.Streaming; // 1
DiscordActivityType.Listening; // 2
DiscordActivityType.Watching; // 3
DiscordActivityType.Custom; // 4
DiscordActivityType.Competing; // 5Select activities
activity-helpers.tstypescript
import {
getPlayingActivities,
getCustomStatus,
getSpotifyActivity,
getSpotifyNowPlaying,
} from "@iconical/presencekit";
const snapshot = data.presence;
const games = getPlayingActivities(snapshot); // PresenceActivity[]
const custom = getCustomStatus(snapshot); // PresenceActivity | null
const spotifyActivity = getSpotifyActivity(snapshot); // PresenceActivity | null
const song = getSpotifyNowPlaying(snapshot); // SpotifyNowPlaying | nullgetPlayingActivities(snapshot)returns only activities with typePlaying.getCustomStatus(snapshot)returns the first custom-status activity ornull.getSpotifyActivity(snapshot)returns Discord's SpotifyListeningactivity ornull.getSpotifyNowPlaying(snapshot, now?)turns that activity into normalized track metadata. If you already have aPresenceResult,data.spotifyis available directly.
Artwork URLs and fallback metadata
activity-artwork.tstypescript
import { getActivityArtwork } from "@iconical/presencekit";
const game = getPlayingActivities(data.presence)[0];
const art = getActivityArtwork(game, {
overrides: {
"123456789012345678": {
cover: "https://example.com/custom-cover.webp",
icon: "https://example.com/custom-icon.webp",
},
},
});
console.log(art.large, art.small, art.banner, art.fallback.label);Overrides are keyed by Discord application ID, not user ID; the numeric example in the map is a stand-in application ID. Only HTTPS image URLs are accepted. getActivityArtwork returns candidate image URLs and fallback metadata—it does not detect broken images at runtime. Use ActivityArtwork on React to handle loading failures automatically.
Elapsed time
activity-timers.tstypescript
import { getActivityElapsedMs } from "@iconical/presencekit";
const elapsed = getActivityElapsedMs(game); // number (ms) | null
const minutes = elapsed === null ? null : Math.floor(elapsed / 60_000);Was this page helpful?