【问题标题】:Delete an old message from user - Discord.js删除用户的旧消息 - Discord.js
【发布时间】:2020-07-15 07:23:58
【问题描述】:

我目前正在制作一个机器人,用作排队等候的人的队列。我很难删除用户发送的要添加到队列中的旧消息(这样不和谐就不会混乱)。

从客户端访问和删除旧消息的正确方法是什么?

!next -> 将人添加到队列中,
!remove -> 应该删除队列中的第一个人并删除用户在聊天中输入的“!下一个”呼叫。

client.on('message', message => {
    user = message.member;
    user = user.toString();
    idNumber = message.member.id;

   if (message.content === '!next') {
        x++;
       message.reply('Added to waiting queue. Position ' + x);
       arrayName.push(user);
       idName.push(idNumber);
       }
     else if (message.content === '!remove') {
         x--;
         arrayName.shift();
         idName.shift();
         message.reply('Removed Top User from Queue. Users Left: '  + x);
         //how to remove !next call from user that called it?
         }

【问题讨论】:

  • 我建议您立即删除!next 消息,无论在第一个if 语句中使用message.delete()
  • @Syntle 我想留下 !next 消息,以确保用户可以确认他们稍后被添加到列表中。

标签: discord discord.js


【解决方案1】:

我同意你的 cmets 中的 Syntle,你应该立即删除它。

也就是说,如果你真的想这样做,这里是问题的答案:

您的队列需要某种多维存储。有多种选择,但我将使用一组对象进行演示。

if (message.content === '!next') {
    array.push({Id: idNumber, User: user, Message: message});
    message.reply('Added to waiting queue. Position ' + array.length);
} else if (message.content === '!remove') {
    let record = array.shift();
    message.reply('Removed Top User from Queue. Users Left: ' + array.length);

    if(!record.Message.deleted) {
        record.Message.delete();
    }
}

【讨论】:

  • 如果我想删除机器人在 !next 中发送的消息回复,您是否也建议做同样的事情?
  • @Sunny 你可以。 message.reply 返回新的回复消息,因此您也可以将其推送到对象中。但是,您需要在消息中使用 array.length + 1 ,因为这样您将在实际将任何内容推送到数组之前进行回复。还要记住 message.reply 是一个承诺,所以在将其推送到数组之前使用 await 或 .then。
猜你喜欢
  • 2021-08-06
  • 1970-01-01
  • 2018-08-26
  • 2020-07-04
  • 1970-01-01
  • 1970-01-01
  • 2021-07-27
  • 2020-09-07
  • 1970-01-01
相关资源
最近更新 更多