javascript - 如何在删除包含 discord.js 的嵌入之前设置延迟?
问题描述
目前这个机器人会在我调用命令时发布嵌入,然后立即删除我想要的命令消息。我也希望它删除嵌入,但我想在删除嵌入之前添加延迟。我在这里做错了什么?
command(client, 'title' , (message) => {
const embed = new Discord.MessageEmbed()
.setTitle('Title Here')
message.channel.send(embed).then
setTimeout(() => {
(message => message.delete(embed))
}, 5000)
if(message.content.startsWith('!' + 'title')) {
message.delete()}
})
解决方案
你真的搞砸了.then
.then 是另一种处理承诺和回调的方式。但在您的代码中,没有回调。
您应该做的是将删除消息的代码放在 .then 的外部和上方
之后,确保 .then 实际上有一个回调。它应该是这样的:
command(client, 'title' , (message) => {
if(message.content.startsWith('!' + 'title')) {
message.delete()
}
const embed = new Discord.MessageEmbed()
.setTitle('Title Here')
message.channel.send(embed).then(msg => {
setTimeout(() => {
msg.delete()
}, 5000)
})
它的作用是,当您运行命令时,它会删除调用。然后它发送嵌入并等待直到不和谐 api 响应说“消息发送成功!”,它运行超时 5 秒并删除嵌入。
推荐阅读
- android - 按钮背景的颜色状态列表不起作用
- mysql - MySQL - ADD COLUMN 在其他列上引发错误
- python - python:如何使用 schelude 修改函数内部的全局变量?
- c++ - 在 docker 容器中运行 Qt GUI
- html - 如何正确对齐导航栏中的元素(文本和图像)?
- mysql - 将 JSON 数据逐行插入 SQL 表中
- python - Django中自定义构建装饰器的条件设置问题
- python - 以编程方式执行 Python shell
- apache-spark - 如何制作小写并删除pyspark中的原始列?
- php - 转储请求后我还能使用 handleRequest() 吗?