/sk-lanyard

SvelteKit integration with Lanyard, an API to fetch your Discord presence

Primary LanguageTypeScriptMIT LicenseMIT

sk-lanyard (SvelteKit + Lanyard)

SvelteKit integration with Lanyard, an API to fetch your Discord presence.

sk-lanyard is fully typed and supports the entire Lanyard API, using both REST and WebSockets.

The useLanyard function returns a reactive store containing presence data.

<script>
	import { useLanyard } from 'sk-lanyard';
	const presence = useLanyard({ method: 'rest', id: '524722785302609941' });
</script>

<pre>
    <!-- Because presence is a reactive store, use $presence to access the data -->
    <code>{JSON.stringify($presence ?? {}, null, 2)}</code>
</pre>

Usage

import { useLanyard } from 'sk-lanyard';

// Optionally import Lanyard types
import type { LanyardData, LanyardHello } from 'sk-lanyard';

REST

// Use the REST API to fetch a single user
const lanyard = useLanyard({ method: 'rest', id: '524722785302609941' });
// Use an interval of 1000 ms
const lanyard = useLanyard({
	method: 'rest',
	pollInterval: 1000,
	id: '524722785302609941'
});
// Use a custom endpoint
const lanyard = useLanyard({
	method: 'rest',
	restUrl: 'https://lanyard.example.com/rest',
	id: '524722785302609941'
});

WebSockets

// Use the WebSockets API to subscribe to a single user
const lanyard = useLanyard({ method: 'ws', id: '524722785302609941' });
// Subscribe to multiple users
const lanyard = useLanyard({
	method: 'ws',
	ids: ['524722785302609941', '299707523370319883']
});
// Subscribe to all users tracked by Lanyard
const lanyard = useLanyard({ method: 'ws', all: true });
// Use a custom endpoint
const lanyard = useLanyard({
	method: 'ws',
	wsUrl: 'wss://lanyard.example.com/ws',
	id: '524722785302609941'
});