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

311
Views
Awaiting reactions accepts the bot and the addressee, not the author of the command

I'm trying to create a discord bot, and I'm writing the command "marry".

It is already essentially ready, from the main thing I want the confirmation of the wedding to be not a yes/no message, but a click on the reaction.

Now everything works, when entering a command, the user who clicks and responds to the proposal to marry, but not with the one who wrote the command, but with the bot.

That is, it works for me now that the author of the message (ie, a bot) and the one to whom the proposal is addressed are getting married. And it is necessary that the one who wrote the command and the user to whom it is addressed get married.

How can I fix this?

Here is my function awaitReactions:

(`Are you ready to get married?`).then(message => {
      message.react('๐Ÿ‘').then(() => message.react('๐Ÿ‘Ž'));
    

      message.awaitReactions((reaction, user) => user.id == userToMarry.id && (reaction.emoji.name == '๐Ÿ‘' || reaction.emoji.name == '๐Ÿ‘Ž'),
        { max: 1, time: 60000, errors: ['time'] })
      .then(collected => {
        const reaction = collected.first();
        if (reaction.emoji.name === '๐Ÿ‘Ž') {
      return message.channel.send('I think **no**...')}
    if (reaction.emoji.name === '๐Ÿ‘') {
      db.set(message.author.id, { user: message.author.id, partner: userToMarry.id });
      db.set(userToMarry.id, { user: userToMarry.id, partner: message.author.id });
    message.channel.send(`${message.author} and ${userToMarry} now married!!`)
      .catch(err => {
        message.channel.send(
          `Something went wrong while trying to marry this user. ${err}`
        );
        return console.log(err)});
      }
  })
  .catch(collected => {
        message.reply('You reacted with neither a thumbs up, nor a thumbs down.');
    });
});

Full command code

const { Command } = require('discord.js-commando');
const db = require("quick.db");


module.exports = class MarryCommand extends Command {
  constructor(client) {
    super(client, {
      name: 'marry',
      memberName: 'marry',
      group: 'test',
      description: 'Marry the mentioned user',
      guildOnly: true,
      args: [
        {
          key: 'userToMarry',
          prompt: 'Please select the member you wish to marry.',
          type: 'member'
        }
      ]
    });
  }

  run(message, { userToMarry }) {
    const exists = db.get(`${message.author.id}.user`);
    const married = db.get(`${userToMarry.id}.user`);
    if (!userToMarry) {
      return message.channel.send('Please try again with a valid user.')}
    if (exists == message.author.id) {
      return message.channel.send('You are already married!')}
    if (married == userToMarry.id) {
      return message.channel.send('This user is already married!')}
    if (userToMarry.id == message.author.id) {
      return message.channel.send('You cannot marry yourself!');
    }
    if (exists != message.author.id && married != userToMarry.id) {
    message.channel.send(`**Important announcement!**
    
    ${message.author} makes a marriage proposal ${userToMarry}
    
    Are you ready to get married?`).then(message => {
      message.react('๐Ÿ‘').then(() => message.react('๐Ÿ‘Ž'));
    

      message.awaitReactions((reaction, user) => user.id == userToMarry.id && (reaction.emoji.name == '๐Ÿ‘' || reaction.emoji.name == '๐Ÿ‘Ž'),
        { max: 1, time: 60000, errors: ['time'] })
      .then(collected => {
        const reaction = collected.first();
        if (reaction.emoji.name === '๐Ÿ‘Ž') {
      return message.channel.send('I think **no**...')}
    if (reaction.emoji.name === '๐Ÿ‘') {
      db.set(message.author.id, { user: message.author.id, partner: userToMarry.id });
      db.set(userToMarry.id, { user: userToMarry.id, partner: message.author.id });
    message.channel.send(`${message.author} and ${userToMarry} now married!!`)
      .catch(err => {
        message.channel.send(
          `Something went wrong while trying to marry this user. ${err}`
        );
        return console.log(err)});
      }
  })
  .catch(collected => {
        message.reply('You reacted with neither a thumbs up, nor a thumbs down.');
    });
});
}}};
over 4 years ago ยท Santiago Trujillo
1 answers
Answer question

0

Try like this

.then(message => {
      message.react('๐Ÿ‘').then(() => message.react('๐Ÿ‘Ž'));
    

      message.awaitReactions((reaction, user) => user.id == userToMarry.id && (reaction.emoji.name == '๐Ÿ‘' || reaction.emoji.name == '๐Ÿ‘Ž'),
        { max: 1, time: 60000, errors: ['time'] })
      .then(collected => {
        const reaction = collected.first();
        if (reaction.emoji.name === '๐Ÿ‘Ž') {
      return message.channel.send('I think **no**...')}
    if (reaction.emoji.name === '๐Ÿ‘') {
      db.set(message.author.id, { user: message.author.id, partner: userToMarry.id });
      db.set(userToMarry.id, { user: userToMarry.id, partner: message.author.id });
    message.channel.send(`${message.author} and ${userToMarry} now married!!`)
 
    ...

  });
});
over 4 years ago ยท Santiago Trujillo 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!