Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

105
Views
How do I use multiple filters with awaitMessages?

I'm making a trivia-like game for a discord bot, but I'm having trouble figuring out how I can use multiple filters since I keep getting this error.

SyntaxError: Identifier 'filter' has already been declared

Here's my code (only the first 2 cases)

  case 0:
    const LGEmbed0 = new Discord.MessageEmbed()
      .setTitle("Guess the Level!")
      .setDescription("Difficulty: Medium")
      .setColor("#36ff69")
      .setImage(
        "https://media.discordapp.net/attachments/891672414361112616/892153208082923520/fever.PNG"
      )
      .setFooter(
        `Requested by ${message.author.username}`,
        `https://cdn.discordapp.com/avatars/${message.author.id}/${message.author.avatar}.webp`
      )
      .setTimestamp();
    console.log("Answer: Fever");
    message.channel.send({
      embeds: [LGEmbed0],
    });

    const filter = (m) => m.content.startsWith("Fever");

    message.channel
      .awaitMessages({ filter, max: 1, time: 10000, errors: ["time"] })
      .then((collected) => message.channel.send({ embeds: [cor] }))
      .catch((collected) => message.channel.send({ embeds: [time] }));

    break;

  case 1:
    const LGEmbed1 = new Discord.MessageEmbed()
      .setTitle("Guess the Level!")
      .setDescription("Difficulty: Harder")
      .setColor("#ff7d36")
      .setImage(
        "https://cdn.discordapp.com/attachments/891672414361112616/892153203465027685/beautiful_vacations.PNG"
      )
      .setFooter(`Requested by ${message.author.username}`)
      .setTimestamp();
    console.log("Answer: Beautiful Vacations");
    message.channel.send({
      embeds: [LGEmbed1],
    });

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

When defining a filter, you can do this:

const filter = (m) => {
  if(m.author.id !== '123') return false;
  if(m.content.startsWith("Fever") return true;
}

Or, use the '&&' operator to pass in multiple arguments. For example:

const filter = (m) => m.content.startsWith('Fever') && m.author.id === '123'

I hope this helps you solve your problem. By the way, regarding your note, you don't need to apologize for asking a question. Everyone started off just like you are right now.

about 4 years ago · Juan Pablo Isaza Report

0

So as it turns out, my problem was extremely simple to solve. Basically, I needed to replace const with var, and boom, it worked.

Sample code below

case 0:
    const LGEmbed0 = new Discord.MessageEmbed()
      .setTitle("Guess the Level!")
      .setDescription("Difficulty: Medium")
      .setColor("#36ff69")
      .setImage(
        "https://media.discordapp.net/attachments/891672414361112616/892153208082923520/fever.PNG"
      )
      .setFooter(
        `Requested by ${message.author.username}`,
        `https://cdn.discordapp.com/avatars/${message.author.id}/${message.author.avatar}.webp`
      )
      .setTimestamp();
    console.log("Answer: Fever");
    message.channel.send({
      embeds: [LGEmbed0],
    });

    var filter = (m) => m.content.startsWith("Fever");

    message.channel
      .awaitMessages({ filter, max: 1, time: 10000, errors: ["time"] })
      .then((collected) => message.channel.send({ embeds: [cor] }))
      .catch((collected) => message.channel.send({ embeds: [time] }));

    break;

  case 1:
    const LGEmbed1 = new Discord.MessageEmbed()
      .setTitle("Guess the Level!")
      .setDescription("Difficulty: Harder")
      .setColor("#ff7d36")
      .setImage(
        "https://cdn.discordapp.com/attachments/891672414361112616/892153203465027685/beautiful_vacations.PNG"
      )
      .setFooter(`Requested by ${message.author.username}`)
      .setTimestamp();
    console.log("Answer: Beautiful Vacations");
    message.channel.send({
      embeds: [LGEmbed1],
    });

var filter = (m) => m.content.startsWith("Beautiful Vacations");

    message.channel
      .awaitMessages({ filter, max: 1, time: 10000, errors: ["time"] })
      .then((collected) => message.channel.send({ embeds: [cor] }))
      .catch((collected) => message.channel.send({ embeds: [time] }));

    break;
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!