我的问题是,尝试删除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 如果(typeof options!=='object')抛出新的TypeError('INVALID_TYPE','options','object',true); ^
TypeError [INVALID_TYPE]:提供的选项不是对象。 在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 [作为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),但是它收到一条错误消息,告诉我消息未定义。
当我删除尝试删除邮件的代码时,该程序将运行。
答案 0 :(得分:3)
如错误消息所述,您无需将任何内容或对象传递给delete
方法。
您可以查询in the documentation。您想要做的就是这样:
client.on('message', msg => {
if(msg.content.startsWith(".del ")) {
msg.delete({timeout: 1000}); //Supposed to delete message
}
});
答案 1 :(得分:2)
通过将 msg.delete(3000)
删除为 msg.delete({ timeout: 3000 })
来更改您的代码,这应该可以修复错误,因为它在 discord.js v12 中已更改。
您可以比较文档 - https://www.npmjs.com/package/discord.js-v11
您可以比较文档 - https://discord.js.org/#/
答案 2 :(得分:1)
如果您想在延迟后删除消息:
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..
处定义了 msg
答案 3 :(得分:1)
注意: delete()
方法/函数的超时参数将在 v13 djs 中被弃用(文档中未提及)。因此您可以使用 {{1 }} 函数用于延迟。
setTimeout()
答案 4 :(得分:1)
有两种方法可以做到
SetTimeout 方法
<View style={{ flexDirection: 'row', justifyContent: 'space-between' }}>
<Button style={{ width: 30, height: 30 }} />
<Text>MODES</Text>
<View style={{ width: 30 }} />
</View>
您可以在命令的参数中添加超时
只是代替
setTimeout(() => {
msg.delete()
}, 1000 // <- change this according to your requirement in miliseconds)
放
msg.delete(3000);
要进行批量删除,您可以这样做
msg.delete({ timeout: 1000});
这可以帮助您删除多达 100 条消息。
您可以在此处比较文档 - Discord.js v11 和 Discord.js v12
答案 5 :(得分:0)
如果您希望延迟删除邮件:
setTimeout(function(){
msg.delete()
}, 1000) // this is the number of miliseconds for the delay
如果您想立即将其删除,
msg.delete()
答案 6 :(得分:0)
您几乎正确的,我可以看到您使用v12,因此功能已更改,因此要纠正错误的第一件事是将msg.delete(3000)
更改为msg.delete({ timeout: 3000 })
,这应该可以解决您看到的错误v11不会使用要求您这样做,但是v12仍然会这样做,我认为我已经在这里解决了这个问题,请将此标记为已回答。如果您将Discord.JS机器人公开,然后将配置添加到该机器人中并制作命令文件,那么我有个建议,这样您就不必制作一个大的凌乱文件并使用诸如if(!message.content.includes("**prefixhere**") return;
这样的前缀语句,而忽略所有没有前缀的消息,然后您需要将消息拆分为
["prefix", "cmd", "args"]
,应该可以正常工作。感谢您让我帮助您。
答案 7 :(得分:0)
如果您尝试添加延迟,之前的回复提供了许多示例。如果您尝试删除一定数量的邮件,则需要使用 message.channel.bulkDelete(varName)
。删除大量消息的方法是批量删除,我也会提到,一次只能删除1-100条消息。
答案 8 :(得分:0)
使用它在超时(以毫秒为单位)中删除消息:
msg.delete({ timeout: 1000});
或者通过这个立即删除:
msg.delete();