簡體   English   中英

Discord.JS fetchMessage()

[英]Discord.JS fetchMessage()

我的 Discord.JS Bot 有問題,我想編輯特定公會和頻道中的嵌入,但是當我嘗試運行命令時,它出錯了

/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);
}

> 如果您使用的是 Discord.js v11,則問題可能來自您在命令中提供的頻道 ID。
> 您似乎嘗試從用戶那里獲取消息,但 method.fetchMessage() 將消息 ID作為參數(請參閱Discord.js 文檔)。
> 您可以使用.then(回調函數)訪問獲取的消息

使固定

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));
}

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));
}
 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).messages.fetch(user).then((msg) => {
       msg.edit(newmessage);
     })
}

你可以試試這個

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM