Discord.js 删除功能

jac*_*aur 0 javascript discord.js

我的问题是我在尝试删除 Discord 中的消息时收到错误消息。

client.on('message', msg => {

    if(msg.content.startsWith(".del ")) {

      msg.delete(1000); //Supposed to delete message

    }
});
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

C:\Users\---\Desktop\Test\node_modules\discord.js\src\structures\Message.js:501
    if (typeof options !== 'object') throw new TypeError('INVALID_TYPE', 'options', 'object', true);
                                     ^

TypeError [INVALID_TYPE]: Supplied options is not an object.
    at Message.delete (C:\Users\---\Desktop\Test\node_modules\discord.js\src\structures\Message.js:501:44)
    at Client.<anonymous> (C:\Users\---\Desktop\Test\index.js:51:17)
    at Client.emit (events.js:310:20)
    at MessageCreateAction.handle (C:\Users\---\Desktop\Test\node_modules\discord.js\src\client\actions\MessageCreate.js:31:14)
    at Object.module.exports [as MESSAGE_CREATE] (C:\Users\---\Desktop\Test\node_modules\discord.js\src\client\websocket\handlers\MESSAGE_CREATE.js:4:32)
    at WebSocketManager.handlePacket (C:\Users\---\Desktop\Test\node_modules\discord.js\src\client\websocket\WebSocketManager.js:386:31)
    at WebSocketShard.onPacket (C:\Users\---\Desktop\Test\node_modules\discord.js\src\client\websocket\WebSocketShard.js:436:22)
    at WebSocketShard.onMessage (C:\Users\---\Desktop\Test\node_modules\discord.js\src\client\websocket\WebSocketShard.js:293:10)
    at WebSocket.onMessage (C:\Users\---\Desktop\Test\node_modules\ws\lib\event-target.js:120:16)
    at WebSocket.emit (events.js:310:20) {
  [Symbol(code)]: 'INVALID_TYPE'
}
Run Code Online (Sandbox Code Playgroud)

我也试过message.delete(1000),但我收到一条错误消息,告诉我消息未定义。

当我删除试图删除消息的代码时,该程序会起作用。

Seb*_*lor 6

正如错误消息所说,您需要向该delete方法传递任何内容或对象。


新版本 vor Discord.js V13

对于 Discord.js@13 及以上版本,该message.delete()方法不再接受选项。你现在需要使用setTimeout这样的:

Message.delete() 方法不再接受任何选项,需要手动执行定时删除。

setTimeout(() => msg.delete(), 1000);
Run Code Online (Sandbox Code Playgroud)

对于 Discord.js V12 及更早版本

您可以在文档中查找。你想要做的是这样的:

client.on('message', msg => {
  if(msg.content.startsWith(".del ")) {

    msg.delete({timeout: 1000}); //Supposed to delete message

  }
});
Run Code Online (Sandbox Code Playgroud)