mirror of https://github.com/kry008/Bot-2.0.git
131 lines
4.8 KiB
JavaScript
131 lines
4.8 KiB
JavaScript
const fs = require('fs');
|
|
//read files databases/pokemon_games.json and databases/pokemon.json
|
|
const pokemon_games = JSON.parse(fs.readFileSync('databases/pokemon_games.json'));
|
|
const pokemon = JSON.parse(fs.readFileSync('databases/pokemon.json'));
|
|
|
|
/*pokemon.json
|
|
[
|
|
{
|
|
"number": 1,
|
|
"name": "Bulbasaur",
|
|
"img": "https://en.wikipedia.org/wiki/Bulbasaur#/media/File:Pok%C3%A9mon_Bulbasaur_art.png",
|
|
"type": [
|
|
"Grass",
|
|
"Poison"
|
|
],
|
|
"height": "0.7 m",
|
|
"weight": "6.9 kg",
|
|
"first_appeared": 1,
|
|
"some_facts": [
|
|
"Bulbasaur is the first Pokémon in the National Pokédex.",
|
|
"Bulbasaur is the only dual-type Pokémon in the National Pokédex that is both Poison and Grass type.",
|
|
"Bulbasaur is the only Pokémon that can learn Frenzy Plant, Blast Burn, and Hydro Cannon."
|
|
]
|
|
},
|
|
pokemon_games.json
|
|
[
|
|
{
|
|
"id": 1,
|
|
"name": "Pokémon Red and Blue",
|
|
"year": 1996
|
|
}
|
|
|
|
*/
|
|
|
|
|
|
function randomPokemon() {
|
|
//connect data from pokemon.json and pokemon_games.json
|
|
const randomPokemon = pokemon[Math.floor(Math.random() * pokemon.length)];
|
|
//find game id in pokemon_games.json
|
|
const game = pokemon_games.find(game => game.id === randomPokemon.first_appeared);
|
|
//get numbers of facts and get random fact
|
|
const fact = null;//randomPokemon.some_facts[Math.floor(Math.random() * randomPokemon.some_facts.length)];
|
|
//get types of pokemon
|
|
const types = randomPokemon.type.join(', ');
|
|
return `**${randomPokemon.name}**\nTypes: ${types}\nHeight: ${randomPokemon.height}\nWeight: ${randomPokemon.weight}\nFirst appeared in: ${game.name} (${game.year})\n${fact}\n${randomPokemon.img}`;
|
|
}
|
|
|
|
function pokemonNumber(number) {
|
|
const pokemonNumber = pokemon.find(pokemon => pokemon.number === number);
|
|
if (!pokemonNumber) {
|
|
return 'Pokemon not found **FUNCTION NOT FINISHED**';
|
|
}
|
|
const game = pokemon_games.find(game => game.id === pokemonNumber.first_appeared);
|
|
const fact = null; //pokemonNumber.some_facts[Math.floor(Math.random() * pokemonNumber.some_facts.length)];
|
|
const types = pokemonNumber.type.join(', ');
|
|
return `**${pokemonNumber.name}**\nTypes: ${types}\nHeight: ${pokemonNumber.height}\nWeight: ${pokemonNumber.weight}\nFirst appeared in: ${game.name} (${game.year})\n${fact}`;
|
|
}
|
|
|
|
function pokemonName(name) {
|
|
const pokemonName = pokemon.find(pokemon => pokemon.name.toLowerCase() === name.toLowerCase());
|
|
if (!pokemonName) {
|
|
return 'Pokemon not found **FUNCTION NOT FINISHED**';
|
|
}
|
|
const game = pokemon_games.find(game => game.id === pokemonName.first_appeared);
|
|
const fact = null;//pokemonName.some_facts[Math.floor(Math.random() * pokemonName.some_facts.length)];
|
|
const types = pokemonName.type.join(', ');
|
|
return `**${pokemonName.name}**\nTypes: ${types}\nHeight: ${pokemonName.height}\nWeight: ${pokemonName.weight}\nFirst appeared in: ${game.name} (${game.year})\n${fact}`;
|
|
}
|
|
|
|
module.exports = {
|
|
name: 'pokemon',
|
|
description: 'Get a random pokemon. **FUNCTION NOT FINISHED**',
|
|
help: 'Get a random pokemon. **FUNCTION NOT FINISHED**',
|
|
options: [
|
|
{
|
|
name: 'pokemonname',
|
|
type: 3, // String type
|
|
description: 'Name of the pokemon you want to get information about',
|
|
required: false
|
|
},
|
|
{
|
|
name: 'pokemonnumber',
|
|
type: 4, // Integer type
|
|
description: 'Number of the pokemon you want to get information about',
|
|
required: false
|
|
}
|
|
],
|
|
slash: true,
|
|
text: true,
|
|
admin: false,
|
|
requireKick: false,
|
|
requireBan: false,
|
|
canBeUsedInDm: true,
|
|
premium: false,
|
|
contexts: ['GUILD_TEXT', 'GUILD_VOICE', 'DM'],
|
|
integration_types: [0,1],
|
|
execute: async (message, args) => {
|
|
if(args.length === 0) {
|
|
const pokemon = randomPokemon();
|
|
message.channel.send(pokemon);
|
|
return;
|
|
}
|
|
//check if it is a number
|
|
if(!isNaN(args[0])) {
|
|
const pokemon = pokemonNumber(parseInt(args[0]));
|
|
message.channel.send(pokemon);
|
|
return;
|
|
}
|
|
//check if it is a string
|
|
const pokemon = pokemonName(args.join(' '));
|
|
return message.channel.send(pokemon);
|
|
|
|
|
|
},
|
|
executeSlash: async interaction => {
|
|
const name = interaction.options.getString('pokemonname');
|
|
const number = interaction.options.getInteger('pokemonnumber');
|
|
if (!name && !number) {
|
|
const pokemon = randomPokemon();
|
|
interaction.reply(pokemon);
|
|
return;
|
|
}
|
|
if (number) {
|
|
const pokemon = pokemonNumber(number);
|
|
interaction.reply(pokemon);
|
|
return;
|
|
}
|
|
const pokemon = pokemonName(name);
|
|
interaction.reply(pokemon);
|
|
},
|
|
}; |