我正在尝试制作一个复制命令(从一个公会到另一个公会),以复制表情符号/角色/频道等。
我已经可以将表情符号,频道和角色从一台服务器复制到另一台。我希望复制过程开始时显示一条消息。
代码段
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
语句?