我正在尝试为我的discord机器人制作sudo命令。它的工作方式是,我给它一个用户和一个要执行的命令,它使用 client.emit("message", sudoMessage)
执行该命令。SudMessage将是消息的修改版本,其中成员、作者和内容将被替换。然后,它被我的机器人处理,就好像它是那个用户用那个命令发送的消息一样。
我遇到的问题是,我不能简单地替换 message
. 替换 message.content
工作正常,但正在尝试替换 message.member
抛出类似“无法设置只有getter的属性”的错误。
然后我尝试从sudo命令开始,用消息中的数据填充它,如下所示:
if (message.content.startsWith("sudo") && message.author.id === "my id") {
let hasOwn = Object.prototype.hasOwnProperty;
let sudo = {
content: command,
author: mentioned.user,
member: mentioned,
guild: message.guild,
url: message.url
};
for (var key in message) {
if (!hasOwn.call(sudo, key)) {
sudo[key] = message[key]
}
}
client.emit("message", sudo)
}
然而,正如你们所看到的,我必须手动填写帮会和url,就像这些方面一样 message
(和其他许多属性一样)没有被复制——只有一些属性实际应用于 sudo
. 这个方法似乎需要我手动从中复制大量属性 message
转到 sudo
,这不是我想做的。我怎样才能建立一个 sudo
具有特殊内容、作者和成员的消息对象,同时自动用实际消息中的数据填充其他所有内容?
1条答案
按热度按时间yv5phkfx1#
没关系,我已经弄明白了。我只是需要做一些类似的事情
希望将来有人能从中得到帮助。