discord-akinator

1.1.2 • Public • Published

Discord-Akinator

this is the discord Akinator package.
with this package you can create a akinator discord bot command with the akinator api!

EXAPMLE USAGE:

const { SlashCommandBuilder, SlashCommandStringOption, ActivityType, EmbedBuilder } = require('discord.js')
const Akinator = require('discord-akinator')

module.exports = {
    data: new SlashCommandBuilder()
        .setName('akinator')
        .setDescription('Akinator Game! 🧞')
        .addStringOption(new SlashCommandStringOption()
            .setName('language')
            .setDescription('Select the language you prefer. (default: English)')
            .setChoices({
                name: 'English',
                value: 'en'
            }, {
                name: 'Arabic',
                value: 'ar'
            }, {
                name: 'Spanish',
                value: 'es'
            }, {
                name: 'French',
                value: 'fr'
            }, {
                name: 'Italian',
                value: 'it'
            }, {
                name: 'Japanese',
                value: 'jp'
            }, {
                name: 'Russian',
                value: 'ru'
            }, {
                name: 'Portuguese',
                value: 'pt'
            }, {
                name: 'Turkish',
                value: 'tr'
            }, {
                name: 'Chinese',
                value: 'cn'
            })
            .setRequired(false)
        ),
    async execute (interaction, client) {
        const language = interaction.options.getString('language', false) || 'en'
        const game = new Akinator(language)

        await game.start()
        await interaction.editReply({
            components: [game.component],
            embeds: [game.embed]
        })

        if (err instanceof Error) console.error(err)
            return await interaction.editReply({
                components: [],
                embeds: [],
                content: 'Timeout.'
            })
            await game.stop()

            try {
            const response = await msg.awaitMessageComponent({
                filter: i => ['yes', 'no'].includes(i.customId) && i.user.id === interaction.user.id,
                time: 30_000
            })

            const title = response.customId === 'yes'
                ? 'Awesome! Thanks for playing'
                : 'GG!'

            await msg.edit({
                components: [],
                embeds: [embed.setTitle(title)]
            })
        } catch {
            await msg.edit({
                components: [],
                embeds: [embed.setTitle(null)]
            }).catch(() => null)
        }
    }
}

Full code:

const { SlashCommandBuilder, SlashCommandStringOption, ActivityType, EmbedBuilder } = require('discord.js')
const Akinator = require('discord-akinator')

module.exports = {
    data: new SlashCommandBuilder()
        .setName('akinator')
        .setDescription('Akinator Game! 🧞')
        .addStringOption(new SlashCommandStringOption()
            .setName('language')
            .setDescription('Select the language you prefer. (default: English)')
            .setChoices({
                name: 'English',
                value: 'en'
            }, {
                name: 'Arabic',
                value: 'ar'
            }, {
                name: 'Spanish',
                value: 'es'
            }, {
                name: 'French',
                value: 'fr'
            }, {
                name: 'Italian',
                value: 'it'
            }, {
                name: 'Japanese',
                value: 'jp'
            }, {
                name: 'Russian',
                value: 'ru'
            }, {
                name: 'Portuguese',
                value: 'pt'
            }, {
                name: 'Turkish',
                value: 'tr'
            }, {
                name: 'Chinese',
                value: 'cn'
            })
            .setRequired(false)
        ),
    async execute (interaction, client) {
        await interaction.deferReply()

        const language = interaction.options.getString('language', false) || 'en'
        const game = new Akinator(language)

        await game.start()
        await interaction.editReply({
            components: [game.component],
            embeds: [game.embed]
        })

        const filter = i => i.user.id === interaction.user.id && i.channelId === interaction.channelId
        const channel = await interaction.client.channels.fetch(interaction.channelId, { force: false })

        while (!game.ended) try {
            await game.ask(channel, filter)
            if (!game.ended) await interaction.editReply({ embeds: [game.embed], components: [game.component] })
        } catch (err) {
            if (err instanceof Error) console.error(err)
            return await interaction.editReply({
                components: [],
                embeds: [],
                content: 'Timeout.'
            })
        }
        await game.stop()

        const msg = await interaction.editReply({ components: [game.component], embeds: [game.embed] })
        const embed = new EmbedBuilder(msg.embeds[0].toJSON())

        try {
            const response = await msg.awaitMessageComponent({
                filter: i => ['yes', 'no'].includes(i.customId) && i.user.id === interaction.user.id,
                time: 30_000
            })

            const title = response.customId === 'yes'
                ? 'Awesome! Thanks for playing'
                : 'GG!'

            await msg.edit({
                components: [],
                embeds: [embed.setTitle(title)]
            })
        } catch {
            await msg.edit({
                components: [],
                embeds: [embed.setTitle(null)]
            }).catch(() => null)
        }
    }
}

(use this code in your own router!! and you can change the code everytime thats the code what i am using rn) if you have any other issues/questions you can open a ticket in my github repository if you want!

Package Sidebar

Install

npm i discord-akinator

Weekly Downloads

1

Version

1.1.2

License

ISC

Unpacked Size

9.88 kB

Total Files

3

Last publish

Collaborators

  • fatih5252