如何让我的机器人间隔一定时间自动发送随机生成的消息?
问题修复方案
原代码问题
- 语法错误:
wait(10)被错误写入SendMessage方法的入参对象中,不符合JS对象语法规范,会直接触发解析报错 - 方法调用错误:JS原生无同步阻塞的
wait方法,直接调用会报未定义错误,且当前写法无法实现两条消息的间隔发送逻辑 - 需求匹配错误:硬编码固定消息调用不符合「随机发送消息」的要求
修复代码
场景1:间隔10秒依次发送两条指定消息
// 发送第一条消息 bot.SendMessage({ to: channelID, message: "I like turtles!" }); // setTimeout第二个参数单位为毫秒,10秒对应10000 setTimeout(() => { bot.SendMessage({ to: channelID, message: "I like ponies!" }); }, 10000);
场景2:每隔固定时间随机发送消息(满足核心需求)
// 把所有要随机发送的消息存入数组,可自行扩展内容 const messagePool = [ "I like turtles!", "I like ponies!", "I like cats!", "I like programming!" ]; // 每30秒随机从消息池取一条发送,可自行调整间隔时长,注意不要触发Discord发信频率限制 setInterval(() => { const randomIndex = Math.floor(Math.random() * messagePool.length); bot.SendMessage({ to: channelID, message: messagePool[randomIndex] }); }, 30000);
注意事项
- 如果你使用的机器人框架中SendMessage为异步方法,调用前需要加
await,且外层需要包裹在async函数内 - 发信间隔不要设置过短,避免触发Discord的反垃圾机制导致账号功能受限
内容的提问来源于stack exchange,提问作者koalekdv4
相关产品推荐
相关产品推荐

