【问题标题】:message.channel.send(lvlEmbed).then(msg => {msg.delete(1000)}); not working?message.channel.send(lvlEmbed).then(msg => {msg.delete(1000)});不工作?
【发布时间】:2018-10-07 12:10:50
【问题描述】:

每当我使用时

message.channel.send(lvlEmbed).then(msg => {msg.delete(1000)});

它不起作用。它只有在我没有时间的情况下才有效。我不确定发生了什么事。它工作过一次,然后从来没有工作过!怎么了?

代码:

const Discord = require("discord.js");

let xp = require("../xp.json");
const ms = require("ms");

module.exports.run = async (bot, message, args) => {

    if (!xp[message.author.id]) {
        xp[message.author.id] = {
            xp: 0,
            level: 1
        };
    }
    let curxp = xp[message.author.id].xp;
    let curlvl = xp[message.author.id].level;
    let nxtLvlXp = curlvl * 300;
    let difference = nxtLvlXp - curxp;

    let lvlEmbed = new Discord.RichEmbed()
        .setAuthor(message.author.username)
        .setColor("#e000f4")
        .addField("Level", curlvl, true)
        .addField("XP", curxp, true)
        .setFooter(`${difference} XP til level up`, message.author.displayAvatarURL);

    message.channel.send(lvlEmbed).then(msg => { msg.delete(5000) });


}

module.exports.help = {
    name: "level"
}

【问题讨论】:

  • 尝试捕捉一个错误message.channel.send(lvlEmbed).then(msg => { msg.delete(5000); }).catch(err => { console.error(err); });控制台打印了什么?
  • 我在控制台中没有收到错误
  • 它不起作用你的意思是它根本不发送消息或只是它不删除它?您是否尝试过使用更长的时间:如果您的互联网速度很慢并且您仅在 1 秒后删除了该消息,您甚至都看不到它。
  • 每次不给delete函数指定参数时是否有效?
  • 您好,我找到了原因每次随机使用“nodemon”都会重新启动机器人,使其无法删除消息

标签: javascript node.js discord.js


【解决方案1】:

既然你说如果你不向删除函数输入任何时间它就可以工作,暂时你可以使用 setTimeout 来完成工作。

let p = function(msg){
   msg.delete();
}
message.channel.send(lvlEmbed).then(msg => { setTimeout(p,5000,msg); });

【讨论】:

    猜你喜欢
    • 2021-05-01
    • 2018-05-15
    • 2016-06-24
    • 2018-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多