title: Discord.js command handler with user permission ,client permission and throttling
body: <p>How can i check user permission ,client permission , add throttling and define args in exports like commando does </p>
  
  <p>my message event looks like this</p>
  
  <pre><code>client.on('message', async (message) =&gt; {
  
      if (message.author.bot) return;
      if (!message.guild) return;
      let prefix
      await db.collection('guilds').doc(message.guild.id).get().then((q) =&gt; {
          if (q.exists) {
              prefix = q.data().prefix || config1.prefix_mention;
          } else {
              prefix = "." || config1.prefix_mention;
          }
      })
      const prefixRegex = new RegExp(`^(&lt;@!?${client.user.id}&gt;|${escapeRegex(prefix)})\\s*`);
      if (!prefixRegex.test(message.content)) return;
  
      const [ matchedPrefix ] = message.content.match(prefixRegex);
      const args = message.content.slice(matchedPrefix.length).trim().split(/ +/g);
  
      const cmd = args.shift().toLowerCase();
      if (cmd.length === 0) return;
  
      let command = client.commands.get(cmd);
      if (!command) command = client.commands.get(client.aliases.get(cmd));
      if (!message.channel.permissionsFor(client.user).has("SEND_MESSAGES")) return;
  
      if (command)
          command.run(client, message, args, db);
  })
  </code></pre>
  
  <p>how can i check other permission like example </p>
  
  <pre><code>name: 'osu',
  group: 'search',
  memberName: 'osu',
  description: 'Responds with information on an osu! user.',
  clientPermissions: ["EMBED_LINKS","SEND_MESSAGES"],
  userPermissions:['VIEW_CHANNEL'],
  args: [
   {
    key: 'user',
    prompt: 'What user would you like to get information on?',
    type: 'string'
   }
  ],
  async run(client ,message ,args) {
    //some code here
  }
  </code></pre>