@teeny-tiny/discord-rpc
v1.0.0
Published
Just a teeny-tiny discord-rpc alternative.
Maintainers
Readme
@teeny-tiny/discord-rpc
A minimal, lightweight Discord Rich Presence library for Node.js — no bloated dependencies, no fuss, just simple IPC-based Rich Presence support. Perfect for local bots, desktop apps, or small projects.
Features
- ✅ Minimal & lightweight — no extra dependencies
- ✅ Full Rich Presence support (setActivity, clearActivity)
- ✅ Event-based API (
ready,error, etc.) - ✅ Automatic ping/pong keep-alive
- ✅ Drop-in replacement for
discord-rpc
Installation
npm install @teeny-tiny/discord-rpcUsage
const RPC = require("@teeny-tiny/discord-rpc");
// Register your Discord App Client ID
RPC.register(process.env.CLIENT_ID);
// Create a new client
const client = new RPC.Client({ transport: "ipc" });
client.once("ready", () => {
console.log("Discord RPC ready!");
// Set Rich Presence
client.setActivity({
details: "Building 3 bots",
state: "Working",
startTimestamp: new Date(),
largeImageText: "LocalBotify",
buttons: [
{ label: "Get LocalBotify For Free", url: "https://localbotify.com" }
]
});
// Clear Rich Presence after 10 seconds
setTimeout(() => {
client.clearActivity();
console.log("Activity cleared");
}, 10000);
});
// Connect to Discord
client.login({ clientId: process.env.CLIENT_ID });API
RPC.register(clientId)
Registers your Discord App Client ID globally.
new RPC.Client({ transport: "ipc" })
Creates a new client instance. Currently, only "ipc" transport is supported.
client.login({ clientId })
Connects to the Discord client over IPC.
If clientId is not provided, it uses the registered client ID.
client.setActivity(activity)
Sets the Rich Presence activity. Supports all standard fields:
details(string)state(string)startTimestamp/endTimestamplargeImageKey,largeImageTextsmallImageKey,smallImageTextbuttons(array of{ label, url })
client.clearActivity()
Clears the current Rich Presence activity.
Events
ready— Fired when the client is connected and ready.error— Fired on connection or IPC errors.disconnected— Fired when the IPC connection closes.- Custom Discord events are emitted as
cmdstrings, e.g.,ACTIVITY_JOIN.
Example: Idle Detection
let idleTimer;
const idleThreshold = 60000; // 1 minute
let isIdle = false;
const resetIdleTimer = () => {
clearTimeout(idleTimer);
if (isIdle) {
isIdle = false;
client.setActivity({ details: "Working" });
};
idleTimer = setTimeout(() => {
isIdle = true;
client.setActivity({ details: "Idling" });
}, idleThreshold);
};
["mousemove", "keydown", "mousedown", "scroll"].forEach(event => {
window.addEventListener(event, resetIdleTimer, true);
});
resetIdleTimer();Why use @teeny-tiny/discord-rpc?
- Smaller and faster than the
discord-rpcnpm package - Full control over IPC communication
- Easy to extend and debug
- Ideal for local bots, games, or desktop apps
License
Apache-2.0 © 2025 DinoscapeProgramming
