1.2.6 • Published 1 year ago

discord-sorteos v1.2.6

Weekly downloads
-
License
ISC
Repository
github
Last release
1 year ago

🎉 DISCORD-SORTEOS 🎉

Sistema avanzado de sorteos de discord, mediante mongodb con compatibilidad de SlashCommands y PrefixCommands.

Tendremos actualizaciónes en la que se añadirán nuevos métodos de comandos.

Descargar

npm i discord-sorteos

Actualizaciones:

Update 1.2.6

  • Actualización Estable.
  • Dos metodos añadidos: edit y deleteAll.
  • Errores Solucionados.
  • Ejemplos de comandos actualizados.
  • Código interno de los sorteos actualizado.

Errores, fallas y problemas

  • Si encuentra algún problema, no dude en abrir un problema en nuestro GitHub o unirse a Discord Server.

Ejemplo

Ejemplo

Configurando

Parámetros del cliente

const { Client, GatewayIntentBits } = require("discord.js");
const { SorteoManager } = require("discord-sorteos");

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

const Sorteos = new SorteoManager(client, {
	Embed: {
		Color: '#FFFFFF',
		ColorEnd: '#000000',
		// Title: '', // Usar el por defecto 
		// TitleEnd: '', // Usar el por defecto 
		// Image: '', // Usar el por defecto 
		// ImageEnd: '', // Usar el por defecto 
		EmojiPrize: '💎',
		EmojiTime: '⏳',
		EmojiWinners: '👥',
		EmojiHostedBy: '👤',
	},
	Boton: {
		Texto: 'Entrar',
		Emoji: '🎉',
	}
});
client.sorteos = Sorteos;

client.on("ready", () => {
  console.log(`[Studios] = Bot iniciado.`);
});

Comandos

client.on("interactionCreate", async (interaction) => {
	await interaction.deferReply({ ephemeral: true }).catch((e) => {});
	if (interaction.isChatInputCommand()) {
		const cmdName = interaction.commandName;
		switch (cmdName) {
			// Ejemplo de Comenzar Sorteó 
			case 'start':
			const ms = require('ms');
			const channel = interaction.options.getChannel('canal');
	    	const premio = interaction.options.getString('premio');
    		const ganadores = interaction.options.getNumber('ganadores');
    		const duracion = interaction.options.getString('duracion');
    		const convertTime = ms(duracion);
    		const Start = await client.sorteos.start(channel, interaction, {
    		    premio: premio,
    		    ganadores: ganadores,
    		    duracion: convertTime
    		}).catch((e) => {});
    		if(Start) {
    		    return interaction.reply({
    			embeds: [
    				new EmbedBuilder()
    				.setColor(client.color)
    				.setDescription(`${client.sorteo} El sorteo ha sido creado correctamente.`)
    				.addFields([{
    					name: `${client.channel} Canal:`,
    					value: `${channel}`,
    					inline: true
    				},{
    					name: `<:Prize:1078549475137691780> **|** Premio:`,
    					value: `${premio}`,
    					inline: true
    				},{
    					name: `<:Winners:1078549421077311528> **|** Ganadores:`,
    					value: `${ganadores}`,
    					inline: true
    				},{
    					name: `${client.time} Tiempo:`,
    					value: `${convertTime}`,
    					inline: true
    				}])
    			]
    		});
    		} else if(!Start) {
    		    return interaction.reply({
    				embeds: [
    					new EmbedBuilder()
    					.setColor(client.color)
    					.setDescription(`${client.sorteo} El sorteo no ha iniciado, ah ocurrido un error.`)
    				]
    			});
    		}
			return;
			break;
			// Ejemplo de Terminar Sorteó 
			case 'end':
			const messageId = interaction.options.getString('id');
    		let Ended = await client.sorteos.end(messageId).catch((e) => {});
    		if(Ended) {
    			interaction.reply({
    				embeds: [
    					new EmbedBuilder()
    					.setColor(client.color)
    					.setDescription(`${client.sorteo} El sorteo ha sido finalizado correctamente.`)
    				]
    			});
    		} else if(!Ended) {
    			return interaction.reply({
    				embeds: [
    					new EmbedBuilder()
    					.setColor(client.color)
    					.setDescription(`${client.sorteo} El id del sorteo es invalido o el sorteo ya no existe.`)
    				],
    				ephemeral: true
                });
    		}
			return;
			break;
			// Ejemplo de Reroll
			case 'reroll':
			const messageId = interaction.options.getString('id');
    		let Reroll = await client.sorteos.reroll(messageId).catch((e) => {});
    		if(Reroll) {
    			interaction.reply({
    				embeds: [
    					new EmbedBuilder()
    					.setColor(client.color)
    					.setDescription(`${client.sorteo} El sorteo ha sido rerolleado correctamente.`)
    				],
    				ephemeral: true
    			});
    		} else if (!Reroll) {
    			interaction.reply({
    				embeds: [
    					new EmbedBuilder()
    					.setColor(client.color)
    					.setDescription(`${client.sorteo} El id del sorteo es invalido o el sorteo ya no existe.`)
    				],
    				ephemeral: true
                })
    		}
			return;
			break;
			// Ejemplo de eliminar un Sorteó 
			case 'delete':
			const messageId = interaction.options.getString('id');
    		let Delete = await client.sorteos.delete(messageId).catch((e) => {});
    		if(Delete) {
    			interaction.reply({
    				embeds: [
    					new EmbedBuilder()
    					.setColor(client.color)
    					.setDescription(`${client.sorteo} El sorteo ha sido eliminado correctamente.`)
    				]
    			});
    		} else if(!Delete) {
    			interaction.reply({
    				embeds: [
    					new EmbedBuilder()
    					.setColor(client.color)
    					.setDescription(`${client.sorteo} El id del sorteo es invalido o el sorteo ya no existe.`)
    				],
    				ephemeral: true
    			});
    		}
			return;
			break;
			// Ejemplo de editar un Sorteó 
			case 'edit':
			const id = interaction.options.getString('id');
    		const premio = interaction.options.getString('premio');
    		const ganadores = interaction.options.getNumber('ganadores');
    		const Edit = await client.sorteos.edit(id, {
    			premio: premio,
    			ganadores: ganadores
    		}).catch((e) => {});
    		if(Edit) {
    			interaction.reply({
    				embeds: [
    					new EmbedBuilder()
    					.setColor(client.color)
    					.setDescription(`${client.sorteo} El sorteo ha sido editado correctamente.`)
    					.addFields([{
    						name: `<:Prize:1078549475137691780> **|** Premio:`,
    						value: `${premio}`,
    						inline: true
    					},{
    						name: `<:Winners:1078549421077311528> **|** Ganadores:`,
    						value: `${ganadores}`,
    						inline: true
    					}])
    				]
    			});
    		} else if(!Edit) {
    			interaction.reply({
    				embeds: [
    					new EmbedBuilder()
    					.setColor(client.color)
    					.setDescription(`${client.sorteo} El id del sorteo es invalido o el sorteo ya no existe.`)
    				],
    				ephemeral: true
                });
    		}
			return;
			break;
			// Ejemplo de eliminar todos los Sorteos 
			case 'deleteAll':
			let Delete = await client.sorteos.deleteAll(interaction.guild.id).catch((e) => {});
    		if(Delete) {
    			return interaction.reply({
    				embeds: [
    					new EmbedBuilder()
    					.setColor(client.color)
    					.setDescription(`${client.sorteo} Todos los sorteos han sido eliminados correctamente.`)
    				]
    			});
    		} else if(!Delete) {
    			interaction.reply({
    				embeds: [
    					new EmbedBuilder()
    					.setColor(client.color)
    					.setDescription(`${client.sorteo} El este servidor no tiene sorteos iniciados ni finalizados.`)
    				],
    				ephemeral: true
                });
    		}
			return;
			break;
		}
	}

Eventos del SorteoManager

const { EmbedBuilder } = require('discord.js');
const { stripIndent } = require('common-tags');

// Parámetro **member** puede ser usado para enviar un dm.
// Parámetro **sorteo** obteniendo los datos del schema para crear un mensaje.
// Parámetro **boton** usado para hacer un reply al usuario que se salió correctamente del sorteo.

client.sorteos.on('SorteoReady', (name) => {
	console.log('[Studios] = Sistema de sorteos encendido.')
});

client.sorteos.on('SorteoWinner', (message, sorteo) => {
	const Winners = sorteo.Winners
	.map((winner) => `<@${winner.userID}>`).join(" | ");
	message.channel?.send({
		content: `> Felicidades, ${Winners}! Ganaste: **${sorteo.Prize}**!`
	});
	sorteo.Winners.map(async (user) => {
		const u = await message.guild.members.fetch(user.userID);
		u.send({
			embeds: [
				new EmbedBuilder()
				.setColor(client.color)
				.setDescription(`> ${client.sorteo} Ganaste el sorteo: [[Link del Sorteo]](${message.url})`)
			]
		});
	});
});

client.sorteos.on('SorteoNoWinner', (message, sorteo) => {
	message.channel?.send({
		content: `> El sorteó ha sido cancelado, razón: \`No hay participantes válidos\` | <@${sorteo.HostedBy}>`
	});
});

client.sorteos.on('SorteoInvalid', (member, sorteo, boton) => {
	boton.reply({
		embeds: [
			new EmbedBuilder()
			.setColor(client.color)
			.setDescription(stripIndent`
			${client.sorteo} El sorteo ya a finalizado.`)
		],
		ephemeral: true
	});
});

client.sorteos.on('SorteoJoinUser', (member, sorteo, boton) => {
	boton.reply({
		embeds: [
			new EmbedBuilder()
			.setColor(client.color)
			.setDescription(stripIndent`
			${client.sorteo} Has entrado correctamente al sorteo: **${sorteo.Prize}**.`)
		],
		ephemeral: true
	});
});

client.sorteos.on('SorteoLeftUser', (member, sorteo, boton) => {
	boton.reply({
		embeds: [
			new EmbedBuilder()
			.setColor(client.color)
			.setDescription(stripIndent`
			${client.sorteo} Has salido correctamente del sorteo: **${sorteo.Prize}**.`)
		],
		ephemeral: true
	});
});
1.2.0

1 year ago

1.1.1

1 year ago

1.1.0

1 year ago

1.1.9

1 year ago

1.1.8

1 year ago

1.0.9

1 year ago

1.2.6

1 year ago

1.1.7

1 year ago

1.0.8

1 year ago

1.2.5

1 year ago

1.1.6

1 year ago

1.0.7

1 year ago

1.2.4

1 year ago

1.1.5

1 year ago

1.0.6

1 year ago

1.2.3

1 year ago

1.1.4

1 year ago

1.0.5

1 year ago

1.2.2

1 year ago

1.1.3

1 year ago

1.0.4

1 year ago

1.2.1

1 year ago

1.1.2

1 year ago

1.0.3

1 year ago

1.0.11

1 year ago

1.0.10

1 year ago

1.0.12

1 year ago

1.0.2

1 year ago

1.0.1

1 year ago

1.0.0

1 year ago