discord.js 如何编辑消息后休眠再二次编辑避免更新速度过快
实现方案
你需要先封装一个支持Promise的休眠函数,再在两次编辑之间插入休眠逻辑即可,有两种常用写法:
写法1:和你现有示例一致的Promise链式写法
// 先定义休眠工具函数,参数为等待的毫秒数 const sleep = ms => new Promise(resolve => setTimeout(resolve, ms)); message.channel.send("Beep") .then(sentMessage => { // 第一次编辑 return sentMessage.edit("Boop!") // 等待3秒(可自行调整时长) .then(() => sleep(3000)) // 第二次编辑 .then(() => sentMessage.edit("第二次编辑后的内容")) }) .catch(err => console.error("操作出错:", err));
写法2:更易读的async/await写法(推荐新手使用)
逻辑更清晰,不容易出现嵌套混乱问题:
const sleep = ms => new Promise(resolve => setTimeout(resolve, ms)); // 注意外层调用的函数需要用async修饰,比如消息事件回调可以写成 async (message) => { ... } async function editMessageFlow() { try { // 发送初始消息 const sentMessage = await message.channel.send("Beep"); // 第一次编辑 await sentMessage.edit("Boop!"); // 休眠3秒,自行调整时长避免编辑过快 await sleep(3000); // 第二次编辑 await sentMessage.edit("第二次编辑后的内容"); } catch (err) { console.error("操作出错:", err); } } editMessageFlow();
- 休眠时长可以根据你的需求调整,一般设置1000ms以上就可以避免常规的编辑速率过快问题
- 代码中默认添加了错误捕获逻辑,避免接口调用报错导致进程崩溃
内容的提问来源于stack exchange,提问作者Phoenix
相关产品推荐
相关产品推荐

