发生某事后删除消息(异步/等待?)

时间:2018-07-18 13:19:06

标签: javascript node.js async-await

我正在尝试制作一个复制命令(从一个公会到另一个公会),以复制表情符号/角色/频道等。

我已经可以将表情符号,频道和角色从一台服务器复制到另一台。我希望复制过程开始时显示一条消息。

代码段

module.exports.run = (client, message, args, config) => {
let possibleCopy = ['emojis', 'channels', 'roles'];

// Check if the command can start whit good params, else will retrun an error.
if (!args[0] || !possibleCopy.includes(args[0]) || !args[1] || !args[2]) return message.author.send(model.pushError('noArg'));

// Defining what are the destination and source guilds
const firstServer =  client.guilds.get(args[1]); // Source
const secondServer = client.guilds.get(args[2]); // Destination

switch (args[0]) {
    case "emojis":
    copyEmojis(firstServer, secondServer, message);

    async function copyEmojis (server1, server2, message) {
        message.channel.send({
            embed: {
                title: `Starting transferring ${args[0]}.`,
                description: `Source: ${firstServer.name} - Destination: ${secondServer.name}`
            }
        });
        server1.emojis.map(emoji => {
            server2.createEmoji(emoji.url, emoji.name)
            .catch(e => message.channel.send("Error while copying" + e))
        })
    }
}

我想发送消息并使用.then方法的send()(如message.send("foo").then(msg => do what you want with this message))来验证其自身。

我试图在函数中进行此操作,返回带有.then语句的消息,等待表情符号被复制,然后通过执行variableContainingTheMessage.delete();删除消息,但这不起作用我们无法在.then()语句内返回任何内容。

我该怎么办?

从字面上看,我想要的是:发送一条消息,例如我使用的消息:“正在复制表情符号”-现在正在复制表情符号,然后在完成后删除该消息,也许我应该使用async / await语句?

0 个答案:

没有答案