首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Discord.js delete函数

Discord.js delete函数
EN

Stack Overflow用户
提问于 2020-04-24 04:19:37
回答 9查看 2.5K关注 0票数 0

我的问题是在尝试删除不一致的消息时收到错误。

代码语言:javascript
复制
client.on('message', msg => {

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

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

    }
});

我收到这个错误:

代码语言:javascript
复制
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'
}

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

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

EN

回答 9

Stack Overflow用户

发布于 2020-04-24 05:07:10

正如错误消息所述,您需要将nothing或对象传递给delete方法。

新版本vor Discord.js V13

对于Discord.js@13和更高版本,message.delete()方法不再接受选项。您现在需要使用这样的setTimeout

The Message.delete() method no longer accepts any options, requiring a timed-delete to be performed manually.

代码语言:javascript
复制
setTimeout(() => msg.delete(), 1000);

适用于Discord.js V12和更早版本

你可以在in the documentation上找到它。你想要做的事情是这样的:

代码语言:javascript
复制
client.on('message', msg => {
  if(msg.content.startsWith(".del ")) {

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

  }
});
票数 6
EN

Stack Overflow用户

发布于 2021-01-26 22:48:28

通过将msg.delete(3000)移至msg.delete({ timeout: 3000 })来更改代码,这样应该可以修复错误,因为它已在discord.js v12中进行了更改。

您可以比较文档- https://www.npmjs.com/package/discord.js-v11

代码语言:javascript
复制
         You can compare the docs - [https://discord.js.org/#/](https://discord.js.org/#/)
票数 2
EN

Stack Overflow用户

发布于 2021-03-19 18:53:07

你可以通过两种方法做到这一点

  1. SetTimeout方法

setTimeout(() => { msg.delete() },1000 // <-根据您的需求修改,单位为毫秒)

  1. 您可以在命令的args中添加超时

而不是

msg.delete(3000);

msg.delete({ timeout: 1000});

  1. 执行您可以执行的批量删除

setTimeout(() => { message.channel.bulkDelete(var) },1000 // <-根据您的需求进行修改,单位为毫秒)

这可以帮助您删除多达100封邮件。

您可以在此处比较文档- Discord.js v11Discord.js v12

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61396267

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档