playcord
Version:
playcord is an epic discord.js package which allows you to make an epic discord bot with some fun features :D!
175 lines (144 loc) • 6.27 kB
JavaScript
const Discord = require('discord.js')
const emojis = require('node-emoji')
const axios = require('axios')
async function pokemon() {
try {
const response = await axios.get('https://pokeapi.co/api/v2/pokemon?limit=1000');
const results = response.data.results;
const randomIndex = Math.floor(Math.random() * results.length);
const pokemon = results[randomIndex];
const pokemonData = await axios.get(pokemon.url);
const pokemonName = pokemonData.data.name;
const pokemonImage = pokemonData.data.sprites.front_default;
return{ name: pokemonName, image: pokemonImage }
} catch (error) {
console.error('Error fetching Pokemon data:', error);
message.channel.send('Sorry, an error occurred while fetching Pokemon data. Please try again later.');
}
}
function randomNumber(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
function generateRandomWord() {
let word = '';
const alphabet = 'abcdefghijklmnopqrstuvwxyz';
for (let i = 0; i < 10; i++) {
const randomIndex = Math.floor(Math.random() * alphabet.length);
const randomLetter = alphabet[randomIndex];
const randomCase = Math.random() < 0.5 ? 'lower' : 'upper';
if (randomCase === 'upper') {
word += randomLetter.toUpperCase();
} else {
word += randomLetter.toLowerCase();
}
}
return word;
}
async function GuessTheNumber(message, max) {
if (!message) return console.log('Please mention a message!')
let maxLimit = max
if (!maxLimit) {
maxLimit = 100
}
const randomN = randomNumber(1, Number(maxLimit))
const challenge = randomNumber(1, 20)
const riddle = `**Hint:** *the number is lesser that ${randomN + challenge}!`
const embed = new Discord.EmbedBuilder()
.setTitle('Guess the number!')
.setAuthor({name: message.user.username, iconURL: message.user.displayAvatarURL()})
.setColor('Greyple')
.setDescription(riddle)
const sentEmbed = await message.channel.send({embeds: [embed]})
const messageCollector = new Discord.MessageCollector(message.channel, {time: 30000})
messageCollector.on('collect', (msg) => {
if (msg.content !== randomN) {
msg.react('❌')
} else {
msg.react('✔️')
sentEmbed.delete()
const winEmbed = new Discord.EmbedBuilder()
.setColor('Gold')
.setTitle(`${msg.user.username} wins!`)
.setDescription(`${msg.user.username} guessed the number! The number was **${randomN}**!`)
msg.reply({embeds: [winEmbed]})
}
})
messageCollector.on('end', () => {
sentEmbed.delete()
message.reply(`Nobody guessed the number! The number was **${randomN}**!`)
})
}
async function ReactFast(message) {
if (!message) return console.log('Please mention a message')
const emoji = emojis.random()
const embed = new Discord.EmbedBuilder()
.setColor('Greyple')
.setAuthor({name: message.user.username, iconURL: message.user.displayAvatarURL()})
.setDescription(`The first one to react this message with this emoji wins! ${emoji}`)
const sentEmbed = await message.channel.send({embeds: [embed]})
const reactCollector = new Discord.ReactionCollector(embed, {time: 30000})
reactCollector.on('collect', (reaction, user) => {
if (reaction.emoji === emoji) {
const winEmbed = new Discord.EmbedBuilder()
.setColor('Gold')
.setTitle(`${user.username} wins!`)
.setDescription(`${user.username} was the first one to react to the message I sent!`)
sentEmbed.delete()
message.channel.send({embeds: [embed]})
}
})
reactCollector.on('end', () => {
sentEmbed.delete()
message.reply('Nobody wants to react to that message I sent :(')
})
}
async function TypeIt(message) {
if (!message) return console.log('Please mention a message')
const word = generateRandomWord()
const embed = new Discord.EmbedBuilder()
.setAuthor({name: message.user.username, iconURL: message.user.displayAvatarURL()})
.setColor('Greyple')
.setTitle('Type it!')
.setDescription(`Type this word as fast as you can!: ${word}`)
const messageCollector = new Discord.MessageCollector(message.channel, {time: 30000})
const sentEmbed = await message.channel.send({embeds: [embed]})
messageCollector.on('collect', (msg) => {
if (msg.content !== word) {
msg.react('❌')
} else {
msg.react('✔️')
const winEmbed = new Discord.EmbedBuilder()
.setTitle(`${msg.user.username} won!`)
.setColor('Gold')
.setDescription(`${msg.user.username} typed the word **${word}** correctly before anyone could!`)
sentEmbed.delete()
msg.reply({embeds: [embed]})
}
})
messageCollector.on('end', () => {
sentEmbed.delete()
message.reply('Nobody typed the word :(')
})
}
async function WhosThatPokemon(message) {
if (!message) return console.log('Please mention a message')
const { name, image } = await pokemon()
const embed = new Discord.EmbedBuilder()
.setAuthor({name: message.user.username, iconURL: message.user.displayAvatarURL()})
.setColor('Greyple')
.setTitle('Whos that pokemon!')
.setImage(pokemonImage)
const messageCollector = new Discord.MessageCollector(message.channel, {time: 30000})
const sentEmbed = message.channel.send({embeds: [embed]})
messageCollector.on('collect', (msg) => {
if (msg.content !== name) {
msg.react('❌')
} else {
msg.react('✔️')
const winEmbed = new Discord.EmbedBuilder()
.setTitle(`${msg.user.username} wins!`)
.setDescription(`${msg.user.username} guessed the pokemon! The pokemon was **${name}**!`)
}
})
}
module.exports = { GuessTheNumber, ReactFast, TypeIt, WhosThatPokemon}