【问题标题】:Discord.JS fetchMessage()Discord.JS fetchMessage()
【发布时间】:2020-11-07 12:40:04
【问题描述】:

我的 Discord.JS 机器人有问题,我想在特定的公会和频道中编辑嵌入,但是当我尝试运行命令时,它会出错

/root/my-bot/my-bot.js:550
    guild.channels.get(channel).fetchMessage(user).edit(newMessage);
                               ^

TypeError: Cannot read property 'fetchMessage' of undefined
at Client.<anonymous> (/root/my-bot/my-bot.js:550:31)
at Client.emit (events.js:315:20)
at MessageCreateHandler.handle (/root/my-bot/node_modules/discord.js/src/client/websocket/packets/handlers/MessageCreate.js:9:34)
at WebSocketPacketManager.handle (/root/my-bot/node_modules/discord.js/src/client/websocket/packets/WebSocketPacketManager.js:105:65)
at WebSocketConnection.onPacket (/root/my-bot/node_modules/discord.js/src/client/websocket/WebSocketConnection.js:333:35)
at WebSocketConnection.onMessage (/root/my-bot/node_modules/discord.js/src/client/websocket/WebSocketConnection.js:296:17)
at WebSocket.onMessage (/root/my-bot/node_modules/ws/lib/event-target.js:120:16)
at WebSocket.emit (events.js:315:20)
at Receiver.receiverOnMessage (/root/my-bot/node_modules/ws/lib/websocket.js:789:20)
at Receiver.emit (events.js:315:20)

这是我的命令代码:

 if(message.content.startsWith(prefix + "edit"))
 {
     message.delete();
     let guild = client.guilds.get('server-id')
     const channel = args[0];
     const user = args[1];
     let newMessage = args.slice(2).join(' ');
     guild.channels.get(channel).fetchMessage(user).edit(newMessage);
}

【问题讨论】:

    标签: javascript node.js fetch discord.js


    【解决方案1】:

    > 如果您使用的是 Discord.js v11,问题可能来自您在命令中提供的频道 ID。
    >您似乎试图从用户那里获取消息,但方法 .fetchMessage() 将 message id 作为参数(请参阅Discord.js documentation)。
    > 您可以使用 .then(callback function) 访问获取的 Message

    修复

    if(message.content.startsWith(prefix + "edit"))
     {
         message.delete();
         let guild = client.guilds.get('server-id');
         const channel = args[0];
         const messageId = args[1];
         let newMessage = args.slice(2).join(' ');
         let fetchedChannel = guild.channels.get(channel);
         if (!fetchedChannel) return console.log('Channel not found');
         fetchedChannel.fetchMessage(messageId).then(message => {
             message.edit(newMessage);
         }).catch(error => console.error(error));
    }
    

    【讨论】:

      【解决方案2】:

      Here is a possible fix:

       const prefix = 'YOUR_PREFIX';
      if(message.content.startsWith(prefix + "edit"))
       {
           message.delete();
           let guild = client.guilds.get('server-id');
           const channel = args[0];
           const messageId = args[1];
           let newMessage = args.slice(2).join(' ');
           let fetchedChannel = guild.channels.get(channel);
           if (!fetchedChannel) {
               return console.log('Channel not found');
           }
           fetchedChannel.fetchMessage(messageId).then(message) => {
               message.edit(newMessage);
           }).catch(error => console.error(error));
      }
      

      【讨论】:

        猜你喜欢
        • 2020-05-16
        • 1970-01-01
        • 2020-07-20
        • 2019-07-10
        • 2019-10-16
        • 1970-01-01
        • 1970-01-01
        • 2021-01-16
        • 2021-02-20
        相关资源
        最近更新 更多