@ovencord/rest
v2.6.1
Published
The REST API for discord.js
Maintainers
Readme
@ovencord/rest
High-performance, Bun-native Discord REST client.
@ovencord/rest is a modernized fork of @ovencord/rest, rebuilt from the ground up to leverage the full power of the Bun runtime. It maintains 100% API compatibility with the original package while offering superior performance and zero legacy bloat.
🥟 Why Ovencord-REST?
| Feature | @ovencord/rest | @ovencord/rest | |---------|-----------------|----------------| | Runtime | Node.js | Bun Native | | HTTP Client | undici (Legacy) | Bun.fetch (Native Zig) | | File Handling | node:fs / Buffer | Bun.file / Uint8Array | | Dependencies | ~10+ | Minimal | | Build Step | Required (CJS/ESM) | None (Source-only) | | Speed | Standard | Up to 2x faster request cycle |
✨ Architectural Shift
We replaced the complex undici dispatcher and Node.js-specific stream handling with a clean, Web-Standard implementation powered by Bun's native Zig-accelerated fetch.
📦 Installation
Bun 1.0.0 or newer is required.
bun add @ovencord/rest🚀 Examples
Send a basic message
import { REST } from '@ovencord/rest';
import { Routes } from 'discord-api-types/v10';
const rest = new REST({ version: '10' }).setToken(process.env.DISCORD_TOKEN!);
try {
await rest.post(Routes.channelMessages(CHANNEL_ID), {
body: {
content: 'Cooked with Bun! 🥟',
},
});
} catch (error) {
console.error(error);
}Uploading a file (Bun Native)
import { REST } from '@ovencord/rest';
import { Routes } from 'discord-api-types/v10';
const rest = new REST({ version: '10' }).setToken(TOKEN);
await rest.post(Routes.channelMessages(CHANNEL_ID), {
files: [
{
attachment: Bun.file('./logo.png'),
name: 'logo.png',
},
],
});🛠️ Performance Features
- Zero-Copy: Optimized binary handling using
Uint8Arrayinstead ofBufferwhere possible. - Native Fetch: Uses Bun's specialized
fetchimplementation for lower overhead. - Source-Only: No more
distfolders. Bun loads the TypeScript source directly, leading to faster startup times and better stack traces.
🤝 Contributing
See the contribution guide if you'd like to submit a PR.
📜 License
Apache-2.0 © Ovencord Contributors
Original discord.js code © Discord.js Contributors
