Skip to content

A discord.js russian roulette where the loser gets kicked.

License

Notifications You must be signed in to change notification settings

helmasaur/horsengel-roulette

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

53 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

License: MIT

Horsengel roulette

Russian roulette for the Discord.js library where the loser gets kicked. For the moment, it's only one versus one. After getting kicked, an invitation link is sent to the loser.

Note: after getting kicked, the server joined date on a member's profile will be the date of the member rejoining the server.

Requirements

The Horsengel roulette works both on version 13 and 14 of discord.js:

  • v14: you can use the last version of horsengel-roulette (Node.js version 16.9.0 or newer required);
  • v13: use the version 1.2.0 of horsengel-roulette using this command to install it: npm install horsengel-roulette@1.2.0 and this example to make it work. If you have an issue, you can leave a comment here.

The Horsengel roulette is compatible with TypeScript. If you have an issue, you can leave a comment here.

Installation

You have to add this module to your npm project folder.

$ npm install horsengel-roulette

If you are using a framework, you might need to create two command files called yes.js and pan.js. Those commands are used during the game but the framework might return that those don't exist as it wouldn't find any corresponding file. If you have this issue, create a file using the structure of the framework that you chose and it will work just fine. If you have an issue, you can leave a comment here.

Example

This is the most basic example of a working Horsengel roulette command on discord.js v14. Its aim is to make it understandable. Don't forget to add the gateway intents listed in the example.

const { Client, Events, GatewayIntentBits } = require('discord.js');
const HorsengelRoulette = require('horsengel-roulette');

const client = new Client({
	intents: [
		GatewayIntentBits.DirectMessages,
		GatewayIntentBits.Guilds,
		GatewayIntentBits.GuildMembers,
		GatewayIntentBits.GuildInvites,
		GatewayIntentBits.GuildMessages,
		GatewayIntentBits.MessageContent
	]
});

client.once(Events.ClientReady, c => {
	console.log(`Ready! Logged in as ${c.user.tag}`);
});

client.on(Events.MessageCreate, async msg => {
	if (msg.content.startsWith('!hr')) {
		const hr = new HorsengelRoulette(msg, msg.member, msg.mentions.members.first(), '!', 'en');
		hr.load(6, 1);
		hr.start();
	}
});

client.login('your-bot-token');

The Horsengel roulette instanciation

const hr = new HorsengelRoulette(msg, msg.member, msg.mentions.members.first(), '!', 'en');
  • The first argument is the message starting the duel.
  • The second and third argument are respectively the player 1 (the one provoking the duel) and the player 2 (the one provoked).
  • The third argument is the prefix you want to use;
  • The last argument is to set the language of the game response (not used yet).

The loading of the revolver

hr.load(6, 1);
  • The first argument is the magazine size.
  • The second the number of bullets.

How to play

For this example, the command prefix is ! but feel free to use the one you use with your bot. You can also personalise the command name but I advice you to use the name horsengel-roulette with hr as an alias. If you don't use aliasses, the second one is preferred.

Commands:

  • to start a duel: !hr <GuildMember>
  • to accept a duel: !yes
  • to shoot : !pan

If there is no answer before 30 seconds after the start command, the duel is cancelled. After the same amount of time, if a player does not shoot, he loses the game but he isn't kicked.

Translation

For the moment, the only avaible language is English but a more personalised text will soon be released in English and in French. After that, you are free to participate to the translation in any other language as long as it follows the original text.

Thanks

Thanks to:

Licenses