'use strict';

const axios = require('axios');
const matrixQuotes = require('../../model/matrix_quotes');

let ballOptions = [
    "It is certain.",
    "It is decidedly so.",
    "Without a doubt.",
    "Yes definitely.",
    "You may rely on it.",
    "As I see it, yes.",
    "Most likely.",
    "Outlook good.",
    "The Core gods will it to be!",
    "Yes.",
    "Signs point to yes.",
    "Reply hazy, try again.",
    "You should ask Ethan",
    "Ask again later.",
    "Better not tell you now.",
    "Cannot predict now.",
    "Concentrate and ask again.",
    "You will find the answers during you journey to The Core!",
    "Don't count on it.",
    "My reply is no.",
    "My sources say no.",
    "Outlook not so good.",
    "Very doubtful.",
];


module.exports = {
    '8ball':{
        desc: `magic 8 Ball pick.`,
        async function(from){
            await this.say(
                `> The 8 Ball says...`,
                `> ${ballOptions[Math.floor(Math.random()*ballOptions.length)]}`
            );
        }
    },
    "joke": {
        desc: "Tells a random joke.",
        async function(from){
            await this.say('> Let me think...');
            let res = await axios.get('https://v2.jokeapi.dev/joke/Any?type=single')
            await this.say(...res.data.joke.split('\n').map(e => `> ${e}`));
        },
    },
    "quote": {
        desc: 'Say an inspirational quote.',
        async function(from){
            await this.say('> Right away!');
            let res = await axios.get('https://zenquotes.io/api/random')
            await this.say(`> ${res.data[0].q} -- ${res.data[0].a}`);
        }
    },
    'west-quote': { 
        desc: `Say a random Kanye West quote.`,
        async function(from) {
            await this.say('> And here we go!');
            let res = await axios.get('https://api.kanye.rest/');
            await this.say(`> ${res.data.quote} -- Kanye West`);
        }
    },
    "fact": {
        desc: `Say a random fact.`,
        async function(from){
            await this.say('> The internet says this is true?');
            let res = await axios.get('https://uselessfacts.jsph.pl/random.json?language=en')
            await this.say(
                `> ${res.data.text}`,
                `> source: ${res.data.source}`
            );
        }
    },
    "advice": { 
        desc: `Say some random advice.`,
        async function(from){
            await this.say('> Try this:');
            let res = await axios.get('https://api.adviceslip.com/advice');
            await this.say(`> ${res.data.slip.advice}`);
        }
    },
    // 'idea': {
    //     desc: `Say a random start up idea.`,
    //     async function(from){
    //         await this.say('> How about?');
    //         let res = await axios.get('https://itsthisforthis.com/api.php?text')
    //         await this.say(`> ${res.data}`);
    //     }
    // },
    'discord': {
        desc: `Say the CJ discord invite link.`,
        async function(from) {
            await this.say('https://discord.gg/hyby9m8');
        }
    },
    'dice': {
        desc: `Roll a die. You can state the max size on the dice. Default is 6.`,
        async function(from, size){
            console.log('dice', size)

            size = size || 6;
            if(!Number.isInteger(Number(size))){
                this.whisper(from, `${size} is not a whole number...`)
                return ;
            }
            await this.say(
                `> Rolling a dice for ${from}`,
                `> ${Math.floor(Math.random()*size)+1}`
            );
        }
    },
    'flip': {
        desc: `Flip a coin.`,
        async function(from){
            await this.say(
                `> Flipping a coin for ${from}`,
                `> ${!!(Math.floor(Math.random() * (3000 - 1500) + 1500)%2) ? "Heads" : "Tails"}`
            );
        }
    },
    'random-player': {
        desc: `Return a random online player.`,
        async function(from){
            let players = this.getPlayers()
            
            delete players[this.bot.entity.username]

            let keys = Object.keys(players);
            let player = players[keys[ keys.length * Math.random() << 0]];

            await this.say(`> I pick [${player.lvl}]${player.username}`)
        }
    },
    'matrix-quote': {
        desc: `Random Matrix quote.`,
        async function(from){
            await this.say(
                `${from} are you ready?`,
                `> ${matrixQuotes[Math.floor(Math.random()*matrixQuotes.length)]}`);
        }
    }
// bot.addCommand('pink-quote', { 
//     desc: `Say a random Pink Floyd quote.`,
//     async function(from) {
//         await this.say(
//             `> Rock 'n' Roll`,
//             `> ${pink_quotes[Math.floor(Math.random()*pink_quotes.length)]} -- Pink Floyd`
//         );        
//     }
// });







};



