我想知道如何从整个行会中而不是从当前渠道中找到具有其ID的消息。
我尝试过
message.guild.channels.fetchMessage(message_ID)
client.channels.fetchMessage(message_ID)
message.channel.guild.fetchMessage(message_ID)
message.fetchMessage(message_ID)
message.guild.fetchMessage(message_ID)
我希望它查看整个行业,并按ID查找消息,然后发送消息内容。另外,我尝试过让它查找我想从中获取消息的频道,但是那也不起作用。
如果有可能使代码更具体,则应查看ID为#qotd-suggestions
的名为479658126858256406
的通道,然后在此处查找消息,然后发送消息的内容。
此外,fetchMessages
的message_ID部分被替换为命令后的内容,因此,如果我说!send 485088208053469204
,它应该发送Message content: "Wow, the admins here are so lame."
答案 0 :(得分:1)
无法使用Guild
方法来做到这一点,但是您可以简单地循环浏览通道并为每个通道调用TextChannel.fetchMessage()
。
为此,您可以使用Collection.forEach()
,但是如果要使用var,那会有些复杂,因此我建议您使用{将Guild.channels
转换为Array
{3}}。
这是一个例子:
async function findMessage(message, ID) {
let channels = message.guild.channels.filter(c => c.type == 'text').array();
for (let current of channels) {
let target = await current.fetchMessage(ID);
if (target) return target;
}
}
然后您可以通过传递触发命令的消息(从中获取行会)和所需的ID来使用此功能。它返回一个Promise<Message>
,或者,如果找不到该消息,则返回Promise<undefined>
。您可以使用await
或Promise.then()
来获取消息:
let m = await findMessage(message, message_ID); // Message or undefined
// OR
findMessage(message, message_ID).then(m => {/* your stuff */});