簡體   English   中英

Discord.js 刪除 function

[英]Discord.js delete function

我的問題是嘗試刪除 Discord 中的消息時收到錯誤消息。

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

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

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

    }
});

我收到此錯誤:

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

TypeError [INVALID_TYPE]:提供的選項不是 object。 在客戶端的 Message.delete (C:\Users---\Desktop\Test\node_modules\discord.js\src\structures\Message.js:501:44)。 (C:\Users---\Desktop\Test\index.js:51:17) 在 Client.emit (events.js:310:20) 在 MessageCreateAction.handle (C:\Users---\Desktop\Test \node_modules\discord.js\src\client\actions\MessageCreate.js:31:14) 在 Object.module.exports [as MESSAGE_CREATE] (C:\Users---\Desktop\Test\node_modules\discord.js\ src\client\websocket\handlers\MESSAGE_CREATE.js:4:32) 在 WebSocketManager.handlePacket (C:\Users---\Desktop\Test\node_modules\discord.js\src\client\websocket\WebSocketManager.js:386 :31) 在 WebSocketShard.onPacket (C:\Users---\Desktop\Test\node_modules\discord.js\src\client\websocket\WebSocketShard.js:436:22) 在 WebSocketShard.onMessage (C:\Users- --\Desktop\Test\node_modules\discord.js\src\client\websocket\WebSocketShard.js:293:10) 在 WebSocket.onMessage (C:\Users---\Desktop\Test\node_modules\ws\lib\ event-target.js:120:16) 在 WebSocket.emit (events.js:310:20) { }

我也嘗試過 message.delete(1000),但我收到一條錯誤消息,告訴我消息未定義。

當我刪除試圖刪除消息的代碼時,該程序工作。

正如錯誤消息所說,您需要將任何內容或 object 傳遞給delete方法。

您可以在文檔中查找它。 你想要做的是這樣的:

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

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

  }
});

通過將msg.delete(3000)刪除為msg.delete({ timeout: 3000 })來更改您的代碼,這應該可以修復錯誤,因為它在 discord.js v12 中已更改。

您可以比較文檔 - https://www.npmjs.com/package/discord.js-v11
您可以比較文檔 - https://discord.js.org/#/

你可以通過兩種方法做到這一點

  1. 設置超時方法

    setTimeout(() => { msg.delete() }, 1000 // <- change this according to your requirement in miliseconds)
  2. 您可以在命令的參數中添加超時

    只是代替

    msg.delete(3000);

    msg.delete({ timeout: 1000});

  3. 要進行批量刪除,您可以執行

    setTimeout(() => { message.channel.bulkDelete(var) }, 1000 // <- change this according to your requirement in miliseconds)

    這可以幫助您刪除最多 100 條消息。

您可以在此處比較文檔 - Discord.js v11Discord.js v12

如果您想在延遲后刪除消息:

setTimeout(function() {
  msg.delete();
}, 1000) // Time in miliseconds, 1s = 1000ms

如果要刪除它,請使用:

msg.delete();

簡單代碼(1秒后刪除命令消息):

client.on('message', msg => {
    if(msg.content.startsWith(".del ")) {
      setTimeout(function() {
          msg.delete();
      }, 1000)
    }
});

錯誤message is not defined向您顯示,因為您在client.on('message', msg..

注意: delete()方法/函數的超時參數將在 v13 djs 中被棄用(文檔中未提及)。因此您可以使用setTimeout() function 進行延遲。

setTimeout(function(){
  msg.delete()
},3000)

如果您想延遲刪除消息:

setTimeout(function(){
  msg.delete()
}, 1000) // this is the number of miliseconds for the delay

如果您想立即刪除它,

msg.delete()

你幾乎是正確的,我可以看到你使用 v12,所以 function 已經改變所以你可以做的第一件事來糾正你的錯誤是將msg.delete(3000)更改為msg.delete({ timeout: 3000 })這應該可以解決錯誤您可以看到 v11 不使用要求您這樣做,但 v12 無論如何我認為我已經解決了這里的問題,請將其標記為已回答。 如果您將 Discord.JS bot 用於公共,我有一個建議,然后將配置添加到 bot 並制作命令文件,這樣您就不必制作一個大雜亂的文件並使用if(.message.content;includes("**prefixhere**") return;這將忽略所有沒有前綴的消息,然后您需要將消息拆分為["prefix", "cmd", "args"]並且應該可以正常工作. 謝謝你讓我幫你。

如果您嘗試添加延遲,前面的回復提供了許多示例。 如果您嘗試刪除一定數量的消息,您需要使用message.channel.bulkDelete(varName) 刪除大量消息的方法是批量刪除,我還會提到,一次只能刪除 1-100 條消息。

使用它在超時時刪除 msg(以 ms 為單位):

msg.delete({ timeout: 1000});

或通過以下方式立即刪除:

msg.delete();

暫無
暫無

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

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