A package that allows your bot of discord.js v13 & v14 to create the new awesome Discord Modals and interact with them

Overview

A package that allows your bot of discord.js v13 & v14 to create the new awesome Discord Modals and interact with them.

🔎 Installation

npm install discord-modals

🔮 What is this package for?

Recently, Discord API officialy announced Modal Interactions.

What is that? Modal is a popup of Text Input Components [Example]. It's so cool and useful for many commands that needs arguments. However, discord.js hasn't added it yet. Discord-Modals can be a solution if you want to test or use Modals right now. Supports discord.js v13 and v14. Try it!

Setup

The most recommended is to put this on your main file.

const { Client } = require('discord.js') // Extract the Client class
const client = new Client({ intents: 32767 }) // Create a Client
const discordModals = require('discord-modals') // Define the discord-modals package!
discordModals(client); // discord-modals needs your client in order to interact with modals

client.login('token') // Login with your bot

Important: Don't forget to put discordModals(client), will be essential to receive the Modal Submit Interaction.

How can i use it?

First of all, we need to understand that Modals and Text Input Components are completely different. Modals is a popup that shows the text input components and text input are the components of modals. To understand better, you can explore the Discord API Documentation here.

Modals have:

  • A Title.
  • A Custom Id.
  • Components (Text Input)

Text Input have:

  • A Custom Id
  • A Style (Short or Paragraph)
  • A Label
  • A minimum length
  • A maximum length
  • A value (A prefilled value if there is not text)
  • And...a place holder

If you have understood this, you can continue on "Examples" section.

📜 Examples

If you are ready, take this examples.

  • First, we are going to create a Modal.
const { Modal } = require('discord-modals') // Modal class

const modal = new Modal() // We create a Modal
.setCustomId('customid')
.setTitle('Test of Discord-Modals!')
.addComponents()

This is a basic structure of a Modal, but something is missing. Yeah! Text Input components.

  • We are going to create and add a Text Input Component to the Modal.
const { Modal, TextInputComponent } = require('discord-modals') // Modal and TextInputComponent class

const modal = new Modal() // We create a Modal
.setCustomId('modal-customid')
.setTitle('Test of Discord-Modals!')
.addComponents(
  new TextInputComponent() // We create a Text Input Component
  .setCustomId('textinput-customid')
  .setLabel('Some text Here')
  .setStyle('SHORT') //IMPORTANT: Text Input Component Style can be 'SHORT' or 'LONG'
  .setMinLength(4)
  .setMaxLength(10)
  .setPlaceholder('Write a text here')
  .setRequired(true) // If it's required or not
);

Yay! We have the full Modal & Text Input Component, but... How can i send/show a Modal?

  • We are going to use the showModal() method to send the modal in an interaction.
const { Modal, TextInputComponent, showModal } = require('discord-modals') // Now we extract the showModal method

const modal = new Modal() // We create a Modal
.setCustomId('modal-customid')
.setTitle('Test of Discord-Modals!')
.addComponents(
  new TextInputComponent() // We create a Text Input Component
  .setCustomId('textinput-customid')
  .setLabel('Some text Here')
  .setStyle('SHORT') //IMPORTANT: Text Input Component Style can be 'SHORT' or 'LONG'
  .setMinLength(4)
  .setMaxLength(10)
  .setPlaceholder('Write a text here')
  .setRequired(true) // If it's required or not
);

client.on('interactionCreate', (interaction) => {
  // Let's say the interaction will be a Slash Command called 'ping'.
  if(interaction.commandName === 'ping'){
    showModal(modal, {
      client: client, // This method needs the Client to show the Modal through the Discord API.
      interaction: interaction // This method needs the Interaction to show the Modal with the Interaction ID & Token.
    })
  }
  
})

Congrats! You show the Modal to the Interaction User. Now, how can i receive the Modal Interaction?

📢 Events: Receiving Modal Submit Interaction

  • discord-modals integrates to your Client a new event called modalSubmit. We are going to use it.
  • To have access to the responses, just use the .getTextInputValue() method with the Custom Id of the Text Input Component.

Recommendation: Put your modalSubmit event on your main file or in an Event Handler.

Reply Examples

  • Usual Reply:
client.on('modalSubmit', (modal) => {
  if(modal.customId === 'modal-customid'){
    const firstResponse = modal.getTextInputValue('textinput-customid')
    modal.reply('Congrats! Powered by discord-modals.' + `\`\`\`${firstResponse}\`\`\``)
  }  
})
  • Ephemeral Reply:
client.on('modalSubmit', (modal) => {
  if(modal.customId === 'modal-customid'){
    const firstResponse = modal.getTextInputValue('textinput-customid')
    await modal.deferReply({ ephemeral: true })
    modal.followUp({ content: 'Congrats! Powered by discord-modals.' + `\`\`\`${firstResponse}\`\`\``, ephemeral: true })
  }  
})

And you made it! I hope this examples help you :)

Final Result

📚 Documentation

  • Check our documentation here.

🔨 Developers

  • 『𝑴𝒂𝒕𝒆𝒐ᵗᵉᵐ』#9999

Issues/Bugs?

Please report it on our GitHub Repository here to fix it inmmediately.

Comments
  • [Collector Interaction] Interaction has already been acknowledged.

    [Collector Interaction] Interaction has already been acknowledged.

    So I've tried to use the collector interaction like:

    const msg = await interaction.followUp({ components: [row5], content: `Weird button just showed up!`, ephemeral: false })
    const collector = msg.createMessageComponentCollector({ time: 90000 })
    
    collector.on('collect', async (i) => {
        if(i.customId === 'trywordbtn') {
            showModal(modal, {
                client: client,
                interaction: i
            }) 
         }
    })
    

    The first time the command works fine, but the second time I use the command I get Discord API error with "interaction has been already acknowledged. Here's the modalSubmit event:

     client.on('modalSubmit', async (modal) => {
                if(modal.customId === 'wordleinput') {
                    await modal.deferReply({ ephemeral: true }) // Error from here belongs...
                    const firstResponse = modal.getTextInputValue('wordinput')
    
                    if(firstResponse === randomWordg) {
                        await modal.followUp({ content: `Congrats 🥳 You guessed the word right, and it was \`${randomWordg}\``, ephemeral: true })
                        
                        await interaction.editReply({ content: `Good job! \`⍟Soon\` tokens has been added to your wallet.`, components: [deadraw] })
    
                    } else if(trys === 4) {
                        await modal.followUp({ content: `You've 4 attempts to guess the word.`, ephemeral: true })
    
                        await interaction.editReply({ content: `Hmm... You should think more about it!`, components: [row5] })
                        trys = trys - 1
    
                    } else if(trys === 3) {
                        await modal.followUp({ content: `\`3 of 4\` Attempts left.`, ephemeral: true })
    
                        await interaction.editReply({ content: `2 more attempts left, it's really easy!`, components: [row5] })
    
                    } else if(trys === 2) {
                        await modal.followUp({ content: `\`2 of 4\` Attempts left.`, ephemeral: true })
    
                        await interaction.editReply({ content: `Really it's that much hard?!`, components: [row5] })
                    } else if(trys === 1) {
                        await modal.followUp({ content: `\`1 of 4\` Attempts left.`, ephemeral: true })
    
                        await interaction.editReply({ content: `Common, think think!`, components: [row5] })
                    } 
                    
                    if(trys === 0) {
                        await modal.followUp({ content: `Game end! You lost...`, ephemeral: true })
    
                        await interaction.editReply({ content: `You've ran out of attempts.. the word was \`${randomWordg}\``, components: [deadraw] })
                    }
                }  
    });
    

    I am suffering this issue ages ago, idk what to do to solve it.. any solution??

    opened by IxAlpha 34
  • modalSubmit event doesn't work

    modalSubmit event doesn't work

    Hello, i have a problem with the Modal Event...

    When i submit some modal like that :

    image

    but in my event manager, i have this code :

    const { Client, Intents } = require("discord.js")
    const { readdirSync } = require("fs");
    const discordModals = require('discord-modals')
    
    global["client"] = new Client({
      intents: 32767,
      partials: ["CHANNEL"],
      fetchAllMembers: true,
      allowedMentions: { repliedUser: false },
      retryLimit: 5,
      invalidRequestWarningInterval: 10
    });
    discordModals(client);
    client.prefix = ".";
    
    client.on('modalSubmit', (modal) => {
      if(modal.customId === 'modal-customid'){
        const firstResponse = modal.getTextInputValue('textinput-customid')
        modal.reply('Congrats! Powered by discord-modals.' + `\`\`\`${firstResponse}\`\`\``)
      }  
    })
    

    Can someone know why the event didn't response ?

    opened by Sedorikku1949 27
  • [discord-modals] SHOW_MODAL_ERROR

    [discord-modals] SHOW_MODAL_ERROR

    Hello There :)

    First of all, I love this work, great job!

    I have the modal working and I am able to use the information submitted from the form and process it perfectly.

    However, this does only work error log free on the first run, on any other runs, I see this, the interesting thing is, the functionality still works, the form still pops up the information is still sent to my api as coded but this error is reported in my bots log:

    [discord-modals] SHOW_MODAL_ERROR: An error occurred when showing a modal. DiscordAPIError: Interaction has already been acknowledged.
        at RequestHandler.execute (/home/CodeBoard/node_modules/discord.js/src/rest/RequestHandler.js:350:13)
        at processTicksAndRejections (node:internal/process/task_queues:96:5)
        at async RequestHandler.push (/home/CodeBoard/node_modules/discord.js/src/rest/RequestHandler.js:51:14)
        at async showModal (/home/CodeBoard/node_modules/discord-modals/src/structures/ShowModal.js:18:9) {
      method: 'post',
      path: '/interactions/THESTINRG/callback',
      code: 40060,
      httpStatus: 400,
      requestData: { json: { type: 9, data: [Object] }, files: [] }
    }
    
                const discordModals = require('discord-modals') // Define the discord-modals package!
                const { Modal, TextInputComponent, showModal } = require('discord-modals') // Now we extract the showModal method
                discordModals(client); // Provide the client to the discord-modals package
    
    
                let titleCompontent = new TextInputComponent() // We create an Text Input Component
                  .setCustomId('title') // We set the customId to title
                  .setLabel('Title Name Here')
                  .setStyle('SHORT') //IMPORTANT: Text Input Component Style can be 'SHORT' or 'LONG'
                  .setMinLength(4)
                  .setMaxLength(15)
                  .setPlaceholder('Write a text here')
                  .setRequired(true) // If it's required or not
                  .setValue('value')
    
                let descCompontent = new TextInputComponent() // We create an Text Input Component
                  .setCustomId('desc') // We set the customId to title
                  .setLabel('Description')
                  .setStyle('LONG') //IMPORTANT: Text Input Component Style can be 'SHORT' or 'LONG'
                  .setMinLength(4)
                  .setMaxLength(250)
                  .setPlaceholder('Write a text here')
                  .setRequired(true) // If it's required or not
                  .setValue('value')
    
                let components = [titleCompontent, descCompontent]
                console.log(components)
    
                const modal = new Modal() // We create a Modal
                  .setCustomId('title')
                  .setTitle('Task Information')
                  .addComponents(components);
    
                showModal(modal, {
                  client: client, // The showModal() method needs the client to send the modal through the API.
                  interaction: interaction // The showModal() method needs the interaction to send the modal with the Interaction ID & Token.
                })
    
    
                client.on('modalSubmit', (modal) => {
                  if (modal.customId === 'title') {
                    (async () => {
    
                      const title = modal.getTextInputValue('title')
                      const desc = modal.getTextInputValue('desc')
                      var Request = http.post('https://' + process.env.ROOT_DOMAIN + '/jsonrpc.php').headers({ Accept: 'application/json', 'Content-Type': 'application/json' }).send({
                        "jsonrpc": "2.0",
                        "method": "createTask",
                        "id": 1176509098,
                        "params": {
                          "owner_id": userID,
                          "creator_id": userID,
                          "date_due": "",
                          "description": desc,
                          "category_id": 0,
                          "score": 0,
                          "title": title,
                          "project_id": projectID,
                          "color_id": "yellow",
                          "column_id": 0,
                          "recurrence_status": 0,
                          "recurrence_trigger": 0,
                          "recurrence_factor": 0,
                          "recurrence_timeframe": 0,
                          "recurrence_basedate": 0
                        }
                      });
    
                      // Begin the request and send authenication using the jsonrpc2.0 protocol.
                      Request.auth({
                        user: 'jsonrpc',
                        pass: process.env.API_KEY,
                        sendImmediately: false
                      }).then(function (response) {
                        console.log(response.body)
                      })
    
                      await modal.reply({ content: 'Task Created!', components: [] });
    
                    })()
                    ```
                    
                    I am not sure if I am doing something wrong in the this or the rest of my code or if the library may be having an issue.
    opened by snxraven 13
  • Error when using modal

    Error when using modal

    Hello!

    I've been testing some commands using modals and every time I use the same command twice (and therefore the same modal opens) I get an error.

    For example, if I run /modal and fill the modal, everything goes great but if after that I run /modal again and I fill the modal with the same text, the bot will crash with the error 'Interaction has already been acknowledged.'

    Code: https://pastebin.com/APQftuwn Error: https://pastebin.com/sc8FKJU1

    opened by Luncaaa 11
  • I got error

    I got error

    Error bash SHOW_MODAL_ERROR: An error occurred when showing a modal. DiscordAPIError: Interaction has already been acknowledged. at RequestHandler.execute (C:\Users\david\desktop\Cating\node_modules\discord.js\src\rest\RequestHandler.js:350:13) at runMicrotasks (<anonymous>) at processTicksAndRejections (node:internal/process/task_queues:96:5) at async RequestHandler.push (C:\Users\david\desktop\Cating\node_modules\discord.js\src\rest\RequestHandler.js:51:14) at async showModal (C:\Users\david\desktop\Cating\node_modules\discord-modals\src\structures\ShowModal.js:31:9) { method: 'post', path: '/interactions/955051216927346748/aW50ZXJhY3Rpb246OTU1MDUxMjE2OTI3MzQ2NzQ4OmJuQU9mdlRscHMzRFpsN0VaS1NSM0lheUJObU5XN3pzeXVXZGtaRTkxUUZVVWdPcHF4TDlKMXVkSm8zakIyNGJjZ1ptSVZ3V3M5azVNMTRTZGlGVEI5N1FTZHl0SlN2MWd2VDFEN1hpQWtZajRYNWxDbk5WTlRPUFFVV1JBSFhT/callback', code: 40060, httpStatus: 400, requestData: { json: { type: 9, data: [Object] }, files: [] } } and Code https://cdn.discordapp.com/attachments/900008888441667596/955058633417322577/unknown.png

    opened by davidnjoy 11
  • How can i post the modal in the specific channel and close the modal ?

    How can i post the modal in the specific channel and close the modal ?

    Hi! I want to post my modal in a special channel. Currently I'm doing this: modal.guild.channels.cache.get(config.modal).send({ embeds: [embed] }) but, my modal won't close and write "an error occurred . Try again." except that the modal sends well in my channel. Would you help me?

    opened by Zarow-01 9
  • Cannot read properties of undefined (reading 'verifyString')

    Cannot read properties of undefined (reading 'verifyString')

    when using modal throwing this error also discord modal is initilised with discord client

    Documents/work/bot-backend/node_modules/discord-modals/src/structures/Modal.js:74 this.customId = Util.verifyString(customId, RangeError, 'MODAL_CUSTOM_ID'); ^ TypeError: Cannot read properties of undefined (reading 'verifyString') at Modal.setCustomId (/Users//Documents/work/bot-backend/node_modules/discord-modals/src/structures/Modal.js:74:26) at Client. (/Users/Documents/work/bot-backend/src/services/discord/initial.ts:145:9) at Client.emit (node:events:527:28)

    opened by kartikkalia74 7
  • Support for json

    Support for json

    Hey i know you created this like embeds with the way you build the modal.

    But could support for json be added? so we can post a json array with all the options, think that would make it easyer to create dynamic forms.

    So ex

    const exampleModal = {
    			type: 9,
    			data: {
    				title: 'LosKros Register',
    				custom_id: 'register',
    				components: [
    					{
    						type: 1,
    						components: [
    							{
    								type: 4,
    								custom_id: 'register',
    								label: 'Some random label',
    								style: 1,
    								min_length: 2,
    								max_length: 400,
    								required : true,
    							},
    						],
    					},
    				],
    			},
    		},
    

    showModalJSON(exampleModal , { client: client, interaction: interaction })

    Just an example the last part might be a better way to do it.

    But would make life a lot easyer, creating modals, just using the json format as well.

    opened by benzon 6
  • Error [INVALID_CLIENT]: The provided Client is invalid in this context.

    Error [INVALID_CLIENT]: The provided Client is invalid in this context.

    So I did everything as the docs said but I don't know why I'm getting this error:

      if (!(client instanceof Client)) throw new Error('INVALID_CLIENT');
                                       ^
    
    Error [INVALID_CLIENT]: The provided Client is invalid in this context.
        at module.exports (/home/runner/Waiter/node_modules/discord-modals/index.js:14:42)
        at Object.<anonymous> (/home/runner/Waiter/index.js:12:1)
        at Module._compile (node:internal/modules/cjs/loader:1101:14)
        at Object.Module._extensions..js (node:internal/modules/cjs/loader:1153:10)
        at Module.load (node:internal/modules/cjs/loader:981:32)
        at Function.Module._load (node:internal/modules/cjs/loader:822:12)
        at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12)
        at node:internal/main/run_main_module:17:47 {
      [Symbol(code)]: 'INVALID_CLIENT'
    }
    npm ERR! code ELIFECYCLE
    npm ERR! errno 1
    npm ERR! [email protected] start: `node .`
    npm ERR! Exit status 1
    npm ERR! 
    npm ERR! Failed at the [email protected] start script.
    npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
    
    npm ERR! A complete log of this run can be found in:
    npm ERR!     /home/runner/.npm/_logs/2022-03-01T13_16_40_246Z-debug.log
    exit status 1
    

    Why is this happening? This is my main (index.js) file:

    const express = require('express')
    const app = express()
    app.listen(8080)
    app.get('/', (req, res) => {
      res.send('Waiter is online!')
    })
    
    
    const { Client, Collection } = require("discord.js")
    const client = new Client({ intents: 32767 })
    const discordModals = require('discord-modals')
    discordModals(client);
    
    client.commands = new Collection();
    client.filters = new Collection();
    client.filtersLog = new Collection();
    client.voiceGenerator = new Collection();
    client.cooldowns = new Collection();
    
    require("./Systems/GiveawaySys")(client);
    require("./Handlers/Events")(client);
    require("./Handlers/Commands")(client);
    
    client.login(process.env.token);
    

    I run it in replit so I have the express function above.

    opened by xTurbo21 6
  • Error

    Error

    Good afternoon mate, I'm facing an error using modal... The error insists on not sending whatever description I left inside the modal. I left above the way I'm using it. I would love it if you could answer me.

    Thank you! Sorry if there are any spelling mistakes, I'm from Brazil

    imagem 1 Imagem 2 Imagem 3

    opened by whoisdon 5
  • modalSubmit won't work on DMs

    modalSubmit won't work on DMs

    Hey o/

    If I execute a command in a DM and make it open a modal, the modal will show up correctly but if I have a modalSubmit method, it will give an error when submiting the modal: DiscordAPIError: Cannot execute action on a DM channel

    Is this a Discord limitation or can it be fixed? Thanks

    opened by Luncaaa 5
  • Show Modal Error (Select Menu)

    Show Modal Error (Select Menu)

    image

    Code

              const modal = new Modal()
              .setCustomId('modal-customid')
              .setTitle('Modal')
              .addComponents(
                new SelectMenuComponent()
                  .setCustomId('theme')
                  .setPlaceholder('What theme of Discord do you like?')
                  .addOptions(
                    {
                      label: 'Dark',
                      description: 'The default theme of Discord.',
                      value: 'dark',
                    },
                    {
                      label: 'Light',
                      description: 'Some people hate it, some people like it.',
                      value: 'light',
                    },
                  ),
              );
    
              return showModal(modal, { client, interaction });
    
    opened by PillowPowa 10
  • How to fetch selectoption fetch type with if

    How to fetch selectoption fetch type with if

      const func = modal.getSelectMenuValues('invite-function');
    
        if(func.value === "invite-set"){
    db.set(`tracker_${modal.guild.id}`, kanal)
    modal.reply("**System Settings Successfully Saved!**", {ephemeral: true})
    }
    
    

    Code is not working :(

    opened by Nicat-dcw 1
  • Cannot find module

    Cannot find module

    I get this error when running my Bot, it says Cannot find module './errors', I've uninstalled and reinstalled discord-modals and it is still giving me this error.

    opened by SamDoesDev 1
Releases(v1.3.9)
  • v1.3.9(Aug 4, 2022)

  • v1.3.8(Aug 4, 2022)

    🎉 Discord-Modals v1.3.8:

    Sometimes we have this project discontinued, many people ask if this package can be marked as deprecated, because of discord.js v13 and discord.js v14, which already have this modal feature. What do you think? 🤔

    Use the discussion in our GitHub repository: Discussion #52.

    • Fix: discord.js v14 util error at 'verifyString'.
    • Fix: "Cannot read properties of undefined (reading '0')" error inside the modal structure.
    • Style: Improve style in files and docs.
    Source code(tar.gz)
    Source code(zip)
  • v1.3.7(Jun 5, 2022)

    🎉 Discord-Modals v1.3.7:

    Surprise! We are back.

    Featured: Discord Developers announced Select Menus in modals, they are about to finish to develop it, but you can use it now. So, now Discord-Modals supports Select Menus in modals! 🎉

    • Chore: Support Select Menus in Modals.
    • Chore: Some improvements to FAQ.
    • Chore: [Select Menus] Update readme to new examples.
    • Chore: [Select Menus] Update docs.
    Source code(tar.gz)
    Source code(zip)
  • v1.3.6(May 16, 2022)

    🎉 Discord-Modals v1.3.6:

    Probably this will be the final version of Discord-Modals. Thank you so much for all the support! :)

    Why? discord.js just released modals on v13.7 and in v14 (dev - unstable). In a very short time, this package will no longer make much sense when it already exists (on all the actual versions).

    • Fix: Ephemeral option when replying to the Modal Submit Interaction.
    • Add FAQ to readme.
    Source code(tar.gz)
    Source code(zip)
  • v1.3.5(Apr 6, 2022)

  • v1.3.4(Apr 6, 2022)

  • v1.3.3(Apr 2, 2022)

    🎉 Discord-Modals v1.3.3:

    • TypeScript Compatibility: Add .init() method.
    • Fix: Readme example type error .addComponents() on Modal class.
    Source code(tar.gz)
    Source code(zip)
  • v1.3.2(Mar 20, 2022)

    🎉 Discord-Modals v1.3.2:

    • Compatibility: change discord-api-types enums from v10 to v9.
    • Modal and ModalSubmitInteraction class: Now the .components property returns ModalActionRows.
    • Code cleanup.
    Source code(tar.gz)
    Source code(zip)
  • v1.3.1(Mar 19, 2022)

  • v1.3.0(Mar 19, 2022)

    🎉 Discord-Modals v1.3.0:

    • Fix bug: 'INVALID_CLIENT' error when the Client is valid on .showModal() method.
    • Now the TextInputComponent returns an Action Row Component. Add ModalActionRow class and types.
    • Featured: Now the .showModal() method supports JSON Modals.
    • Fix error typings ModalSubmitField. .showModal() method, .addComponents() and .setComponents() of Modal class.
    • Featured: Implement .update() method to ModalSubmitInteraction class.
    • Typings: discord-api-types updated to v10.
    Source code(tar.gz)
    Source code(zip)
  • v1.2.9(Mar 14, 2022)

  • v1.2.8(Mar 12, 2022)

  • v1.2.7(Mar 9, 2022)

    🎉 Discord-Modals v1.2.7:

    • Fix types in the declaration file.
    • Align documentation with typings.
    • Fix bug (Compatibility with discord.js v14)
    • Fix examples issues (Readme)
    Source code(tar.gz)
    Source code(zip)
  • v1.2.6(Mar 8, 2022)

    🎉 Discord-Modals v1.2.6:

    • Add types of discord-api-types/v9 in the declaration file.
    • Add .isRepliable() and .isFromMessage() methods to ModalSubmitInteraction class.
    • Update Readme and docs (yarn).
    Source code(tar.gz)
    Source code(zip)
  • v1.2.5(Mar 8, 2022)

    🎉 Discord-Modals v1.2.5: Add missing types in the declaration file.

    Featured: Added to yarn.

    Other minor changes:

    • Update Readme (Aspect: Example Code Block Formatter).
    • package.json fixes.
    Source code(tar.gz)
    Source code(zip)
  • v1.2.4(Mar 4, 2022)

    🎉 Discord.js v14 support and TypeScript support!

    Now, Discord-Modals supports discord.js v13 and v14. Typings were added and now it supports TypeScript!

    The modalSubmit event was added to the Client class and now all the properties and methods will appear when you use the 'modal' parameter.

    Source code(tar.gz)
    Source code(zip)
Owner
MateoDeveloper
Programmer & Discord Bots Developer
MateoDeveloper
Demodal is a browser extension that automatically removes content blocking modals including paywalls, discount offers, promts to sign up or enter your email address and more.

Demodal Demodal is a browser extension that automatically removes content blocking modals including paywalls, discount offers, promts to sign up or en

Elbert Alias 225 Jan 4, 2023
Discord.js v14 bot that logs everything on your Discord server

Discord Server Logger Bot Discord bot that logs all changes on your Discord server! When using this code please give credits to DEEM#6666! Deployment

DEEM 24 Dec 26, 2022
A JavaScript class for creating Bootstrap 5 Modals

BS5ModalJS A JavaScript class for creating Bootstrap 5 Modals Why BS5ModalJS? BS5ModalJS removes the hassle of writing the bootstrap 5 modal html elem

null 1 Feb 1, 2022
New Discord.JS v14 Slash and Prefix Commands handler with Events. Check it out now!

Discord.js v14 Command-Handler Commands, Events, Permissions and Cooldown Handlers for Discord.js v14 bot ~ Made by Lynx Discord.js v14 (dev version)

Comet Development 20 Dec 19, 2022
A discord bot to track "owo", usually used to help with OwO bot. Made with Discord.js v13 includes Slash commands, Leaderboards, Auto Resets etc.

Discord-OwO-tracker A discord bot to track "owo", usually used to help with OwO bot Requirements Discord.js v13 (npm install discord.js@latest) applic

Astrex 4 Nov 24, 2022
Package fetcher is a bot messenger which gather npm packages by uploading either a json file (package.json) or a picture representing package.json. To continue...

package-fetcher Ce projet contient un boilerplate pour un bot messenger et l'executable Windows ngrok qui va permettre de créer un tunnel https pour c

AILI Fida Aliotti Christino 2 Mar 29, 2022
On this page, you can save and load all the awesome books you have and save the name and the author into the local storage. this project uses Javascript to interact with the pages

Awesome Books: refactor to use JavaScript classes In this project, We add the links to the applications into the final project Getting Started if you

Cesar Valencia 8 Nov 29, 2022
This is a Webpack based to-do-list project. With this app, users can add thier daily routine tasks to the list, mark them as complet, edit them or delete them.

To Do List This is a Webpack based to-do-list project. With this app, users can add thier daily routine tasks to the list, mark them as complet, edit

Ali Aqa Atayee 12 Oct 30, 2022
A discord.js v14 bot base

A simple Discord.js version 14 base. It contains a slash command handler, event handler, and an example for the new modals.

astrid 5 Mar 17, 2022
Awesome book with ES6, this project is build using HTML,CSS, JavaScript ES6 the project allows you to add books and save them with the author , for another time checks

Project Name Awsome books Description the project. adding books daynamiclly Built With Major languages Frameworks Technologies used Live Demo (if avai

Alzubair Alqaraghuli 5 Jul 25, 2022
fardin 8 Oct 18, 2022
A CLI to upload files to IPFS and interact with them using wbeb3.storage

Storli A CLI to upload files to IPFS and interact with them using web3.storage Storli Usage Commands Usage $ npm install -g storli $ storli COMMAND ru

Anish De 9 Aug 7, 2022
Awesome Books is a basic website that allows users to add/remove books from a list (including the title and author). It has threee different sections: 1. books list, 2. add new book, 3. contact.

awesomeBooks-modules Awesome Books is a basic website that allows users to add/remove books from a list (including the title and author). It has three

Juan Diaz 6 Aug 26, 2022
Best fast responsive discord anti nuke bot made in javascript using Discord JS@v13

Security Plus Security Plus is an advance anti nuke bot for discord server , Developed in JavaScript by using discord.js@v13 , Security Plus don't all

AAYAN 48 Dec 23, 2022
Шаблон для ботів discord.js v14.8.0 із 100% охопленням Discord API, обробником команд, тощо на основі https://discordjs.guide/

Ласкаво просимо до шаблону дискорд бота Шаблон бота з відкритим вихідним кодом discord.js, який базується на офіційному посібнику з discord.js, щоб ро

GamesTwoLife 4 Mar 18, 2023
Open the whole new fancy chapter, in which end-user can interact lively with our quests!

Fancy Chapter - Here comes the fancy adventure! Fancy Chapter is the User Interface (UI) of TheNewsQuest app, in which user can freely interact tons o

null 4 Aug 5, 2022
Chris Siku 13 Aug 22, 2022
Cindy Dorantes 12 Oct 18, 2022