npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

discordjs-voicerole

v3.1.0

Published

Add or remove roles from an user whenever connects or disconnects from voice channels

Downloads

14

Readme

discordjs-voicerole

This is a pluggable package for Discord.js applications and bots. It will add a guild member to a specific role whenever the member joins a voice channel, and it will remove the member from the role when the voice channel is left.

Requirements

A JavaScript project already depending on Discord.js 13 or Discord.js 14.

Still trapped in Discord.js 12 and having a hard time upgrading? 👉 Stay using discordjs-voicerole 1.0.1, the last version supporting Discord.js 12. You can pin it in your package.json like this:

"discordjs-voicerole": "<2.0.0"

Sorry for stating this, but consider upgrading your bot.

How to use

Import the VoiceRoleManager to use it.

If you are using Node.js and CommonJS. (You probably are if you don't know):

const { VoiceRoleManager } = require("discordjs-voicerole");

If you are using ES Modules or TypeScript, you can make use of import:

import { VoiceRoleManager } from "discordjs-voicerole";

Build a VoiceRoleManager. You need to provide a configuration object. It is an object where keys are the snowflake of a voice channel. For each key, assign the string of the snowflake of a role to the array of snowflakes of roles.

When the user joins a channel monitored by the VoiceRoleManager, they will receive all the roles pointed by their entry in the configuration, and when they leave the channel, they will have those roles removed.

  • To get the ID of a voice channel, right click the channel and use "Copy ID". Make sure that Developer Mode is turned on in the Advanced Settings.
  • To get the ID of a role, visit the server role settings, right click the role, and use "Copy ID". Make sure that Developer Mode is turned on in the Advanced Settings.
const manager = new VoiceRoleManager({
  "40001": ["20001", "20002"],
  "50001": "30001",
};

// When the user joins the voice channel with ID 40001, the roles with
// the ID 20001 and 20002 will be user, and removed when the channel
// is left. When the user joins the voice channel with ID 50001, the
// role with ID 30001 is assigned to the user and removed when left.

To make the library work, simply handle the voiceStateUpdate event in your Discord.js application and call the trigger function with both VoiceState objects.

// client may be Discord.js Client, a Commando CommandoClient...
client.on('voiceStateUpdate', (old, cur) => manager.trigger(old, cur));

Copyright and license

ISC License. Happy to hear about cool projects using this library.

Copyright 2021-2022 Dani Rodríguez

Permission to use, copy, modify, and/or distribute this software for
any purpose with or without fee is hereby granted, provided that the
above copyright notice and this permission notice appear in all copies.

THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE
FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY
DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.