使用discord.js V12获取消息对我不起作用。[Discord.js V12]

6

正如您可以从我的标题中看出的那样,我无法使用discord.js获取消息。

在discord.js v11中,我使用了以下代码:

var bot = new Discord.Client();
bot.on('ready', () => {
  bot.channels.get(channelID).fetchMessages({ around: messageID, limit: 1 })
    .then(async msg => {
      //my code here 
    });
});

在discord.js v12中,应该像这样:

var bot = new Discord.Client();
bot.on('ready', () => {
  bot.channels.cache.get(channelID).messages.fetch({ around: messageID, limit: 1 })
    .then(async msg => {
      //my code here 
    });
});

但这对我没用...

你能帮我吗?或许有其他替代方法。

感谢您的帮助!

编辑1: 它会返回: (node:17184) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'messages' of undefined


请问 "不起作用" 是什么意思?您期望看到什么?实际上您看到了什么?是否有任何报错信息? - Phil
是的,抱歉,我编辑了我的主题。 - Choudini
不应该使用 var 关键字,应该优先使用 const 和 let。 - ations
2个回答

3

很抱歉,我发现我的代码是正确的,但我不知道为什么在尝试时它没有起作用.. 实际上我就是这样写的:


bot.channels.cache.get('ChannelID').messages.fetch({ around: 'messageID', limit: 1 })

.then(async msg => {

 //my code here
})

这完全就是同样的麻烦,我为此浪费了好几个小时 '-'

无论如何,非常抱歉让你也浪费了时间。

我会将其删除。


在您的机器人缓存中之前不存在该频道。要么您使用的是数字而不是字符串(所有雪花ID都必须是字符串),要么该频道确实不存在,或者ID不正确。小建议:使用.fetch('messageID')而不是烦恼选项,它会像v11一样给您消息。 - slothiful

1

3
在v12中,client.channels.cache.get(id)的功能完全正常。Manager的cache属性是一个扩展Map的Collection,并继承了Map#get()方法。在这种特定情况下,两者应该返回相同的值(前者使用后者)。此外,基本的Channel结构没有messages属性,但TextChannel有(这里)。 - slothiful

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接