[英]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/#/
你可以通過兩種方法做到這一點
設置超時方法
setTimeout(() => { msg.delete() }, 1000 // <- change this according to your requirement in miliseconds)
您可以在命令的參數中添加超時
只是代替
msg.delete(3000);
放
msg.delete({ timeout: 1000});
要進行批量刪除,您可以執行
setTimeout(() => { message.channel.bulkDelete(var) }, 1000 // <- change this according to your requirement in miliseconds)
這可以幫助您刪除最多 100 條消息。
您可以在此處比較文檔 - Discord.js v11和Discord.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.