title: Discord.js problem TypeError: Discord.bot is not a constructor
body: <p>So I am coding a Discord bot and I got an error that looks like this</p>
  
  <p><code>TypeError: Discord.bot is not a constructor</code></p>
  
  <p>Here is my code. </p>
  
  <pre class="lang-js prettyprint-override"><code>const Discord = require('discord.js');
  const bot = new Discord.bot();
  
  const token = 'TOKEN';
  
  const PREFIX = '!';
  
  const ytdl = require("ytdl-core");
  
  var version = '1.0.1'
  
  var servers = {};
  
  bot.on('ready', () =&gt; {
      console.log('This bot is online!')
      bot.user.setActivity('SouthAir Servers', {
          type: 'WATCHING'
      }).catch;
  })
  
  
  bot.on('message', message =&gt; {
  
      let args = message.content.substring(PREFIX.length).split(" ");
  
      switch (args[0]) {
          case 'clear':
              if (!args[1]) return message.reply('Error, please define a specific number of messages you want to clear.')
              message.channel.bulkDelete(args[1]);
              break;
  
  
          case 'strike':
              if (!args[1]) message.channel.send('You need to specify a user to strike!')
  
              const user = message.mentions.users.first();
  
              if (user) {
                  const member = message.guild.member(user);
  
                  if (member) {
                      message.channel.send(`${user} has been striked. Any more might result in a demotion!`)
                          .catch(err =&gt; {
                              message.reply('Failed to strike user.');
                          });
                  } else {
                      message.reply("That user is not in this server!")
                  }
              } else {
                  message.reply('That user is not in this server.')
  
              }
              break;
  
          case 'cmds':
  
              message.channel.send('Command List: \n !strike - Strikes a user. \n !clear - Removes a certain amount of messages. \n !lock - Locks down a channel so that only one person can talk. \n !info - The bot will DM you info about SouthAir and itself.');
  
              break;
  
  
          case 'commands':
  
              message.channel.send('Command List: \n !strike - Strikes a user. \n !clear - Removes a certain amount of messages. \n !lock - Locks down a channel so that only one person can talk. \n !info - The bot will DM you info about SouthAir and itself.');
  
              break;
  
  
          case 'info':
              message.author.send('Venstres is the creator of SouthAir. \n The Roblox Group link is: https://www.roblox.com/groups/4073893/SouthAir#!/about . \n SouthAir is a Roblox roleplay game that makes flying in a Roblox airplane fun. \n More info coming soon. \n Bot created by Inki/DevOffline. (Version: 1.0.1)')
              break;
  
              const ms = require("ms");
              const args = message.content.slice(settings.PREFIX.length).trim().split(/ +/g);
              const command = args.shift().toLowerCase();
  
              if (command === "ban") {
  
                  bot.moderator.ban(message.guild.members.get(mentions.users.first().id), {
                      time: ms(args[1]),
                      reason: args.slice(2).join(" "),
                      author: message.member
                  }).then((banData) =&gt; {
                      console.log(banData);
                  });
                  break;
  
                  if (command === "unban") {
  
                      bot.moderator.unban(args[0], {
                          reason: args.slice(1).join(" "),
                          author: message.member
                      }).then((banData) =&gt; {
                          console.log(banData);
                      });
                      break;
  
  
                  }
              }
      }
  });
  
  
  const ticketsystem = require("djs-ticketsystem");
  
  bot.on("message", async message =&gt; {
      if (message.content == '-new') {
  
          ticketsystem.createTicket({
              name: 'new-ticket',
              category: 'TICKETS',
              owner: message.author,
              roles: [
                  'Owner',
                  'Support'
              ],
              openmessage: 'Creating your ticket...',
              ticketmessage: 'Thank-you for creating a ticket!',
              messagelinker: message
          }).catch(err =&gt; {
              message.reply('Failed to create a new ticket.')
          });
  
      }
  });
  
  bot.on("message", (message) =&gt; {
  
      const ms = require("ms"); // npm install ms
      const args = message.content.slice(settings.prefix.length).trim().split(/ +/g);
      const command = args.shift().toLowerCase();
  
      if (command === "mute") {
          // /mute @Rakox 2d bad words
          // will mute Rakox for 2 days and the reason will be "bad words"
  
          bot.moderator.mute(message.guild.members.get(mentions.users.first().id), {
              time: ms(args[1]),
              reason: args.slice(2).join(" "),
              author: message.member,
              mutedRoleID: "689384052142243929"
          }).then((muteData) =&gt; {
              console.log(muteData); // {...} (id, type, author, reason and more)
          });
          // And the member has been muted!
      }
  });
  
  bot.on("message", (message) =&gt; {
  
      const ms = require("ms"); // npm install ms
      const args = message.content.slice(settings.prefix.length).trim().split(/ +/g);
      const command = args.shift().toLowerCase();
  
      if (command === "unmute") {
          // /unmute @Rakox i'm nice
          // will un-mute Rakox and the reason will be "i'm nice"
  
          bot.moderator.unmute(message.guild.members.get(mentions.users.first().id), {
              reason: args.slice(1).join(" "),
              author: message.member,
              mutedRoleID: "689384052142243929"
          }).then((muteData) =&gt; {
              console.log(muteData); // {...} (id, type, author, reason and more)
          });
          // And the member has been un-muted!
      }
  });
  
  bot.on("message", (message) =&gt; {
  
      const ms = require("ms"); // npm install ms
      const args = message.content.slice(settings.prefix.length).trim().split(/ +/g);
      const command = args.shift().toLowerCase();
  
      if (command == "kick") {
          // /kick @Rakox flood
          // will kick Rakox for "flood"
  
          bot.moderator.kick(message.guild.members.get(mentions.users.first().id), {
              reason: args.slice(1).join(" "),
              author: message.member
          }).then((kickData) =&gt; {
              console.log(kickData); // {...} (id, type, author, reason and more)
          });
          // And the member has been kicked!
      }
  });
  
  bot.on("message", (message) =&gt; {
  
      const ms = require("ms"); // npm install ms
      const args = message.content.slice(settings.prefix.length).trim().split(/ +/g);
      const command = args.shift().toLowerCase();
  
      if (command == "warn") {
          // /warn @Rakox spam
          // will warn Rakox for "spam"
  
          bot.moderator.warn(message.guild.members.get(mentions.users.first().id), {
              reason: args.slice(1).join(" "),
              author: message.member
          }).then((warnData) =&gt; {
              console.log(warnData); // {...} (id, type, author, reason and more)
          });
          // And the member has been warned!
      }
  });
  
  bot.login(token);
  </code></pre>