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.
Demo
<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' });