Skip to content

distube

distube on npm

npm GitHub Repo stars Discord
GitHub Workflow Status node-current

Buy Me a Coffee at ko-fi.com

DisTube is a comprehensive Discord music bot library built for discord.js and Oceanic, offering simplified music commands, effortless playback from diverse sources, and integrated audio filters.

  • Easy Integration: Adapters for discord.js v14 (@distube/discordjs) and Oceanic (@distube/oceanic).
  • Voice Management: Robust handling of voice connections and queue management.
  • Audio Filters: Built-in filters (bassboost, echo, karaoke, etc.) and custom filter support.
  • Plugin System: Extensible architecture supporting YouTube, Spotify, SoundCloud, 700+ other sites and Lavalink.
  • Type Safety: Written in TypeScript for a superior development experience.
Resource Description
Ask DeepWiki Learn DisTube with AI-powered assistance.
Installation Detailed requirements and setup guide.
API Reference Complete technical documentation.
Discord Support Join our community for help and discussion.
Terminal window
npm install distube @distube/discordjs @distube/youtube discord.js @discordjs/voice

For Oceanic, install @distube/oceanic oceanic.js instead of @distube/discordjs discord.js.

import { DiscordJSAdapter } from "@distube/discordjs";
import { YouTubePlugin } from "@distube/youtube";
import { Client, GatewayIntentBits } from "discord.js";
import { DisTube } from "distube";
const client = new Client({
intents: [
GatewayIntentBits.Guilds,
GatewayIntentBits.GuildVoiceStates,
GatewayIntentBits.GuildMessages,
GatewayIntentBits.MessageContent,
],
});
const distube = new DisTube({
adapter: new DiscordJSAdapter(client),
plugins: [new YouTubePlugin()],
});
distube.on("queue.item.started", ({ item }) =>
item.metadata.textChannel.send(`Playing \`${item.song.name}\` - \`${item.song.formattedDuration}\``),
);
client.on("messageCreate", message => {
if (message.content.startsWith("!play")) {
distube
.play(message.member.voice.channel, message.content.slice(6), {
metadata: { textChannel: message.channel },
})
.catch(error => message.reply(error.message));
}
});
client.login("TOKEN");

Contributions are welcome! Please read our Contributing Guidelines before submitting a pull request.

Licensed under MIT License


Support me on Ko-fi