1.1.2 • Published 1 year ago

discord-akinator v1.1.2

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

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!

1.1.1

1 year ago

1.1.0

1 year ago

1.0.9

1 year ago

1.1.2

1 year ago

1.0.8

1 year ago

1.0.7

1 year ago

1.0.6

1 year ago

1.0.5

1 year ago

1.0.3

1 year ago

1.0.2

1 year ago

1.0.1

1 year ago

1.0.0

1 year ago