如何修改代码让Discord机器人每分钟给特定用户发消息?
解决方法
原代码的问题在于用forEach遍历了服务器所有成员,还为每个成员单独创建了定时任务,所以会给所有人发消息。要改成只给特定用户发,直接定位目标用户即可,不用遍历所有成员。
修改后的代码示例
// 替换成你要发送消息的特定用户ID const targetUserId = "123456789012345678"; // 获取目标用户对象 const targetMember = guild.members.cache.get(targetUserId); if (targetMember) { // 每分钟给目标用户发送消息 setInterval(() => { targetMember.send('hello') .catch(error => { if (message) message.channel.send(`**dm closed**`); }); }, 60000); } else { if (message) message.channel.send(`**目标用户不在当前服务器中**`); }
关键修改说明
- 移除遍历所有成员的
forEach逻辑,通过用户ID直接定位目标成员 - 仅创建一个定时任务,避免重复执行造成资源浪费
- 增加用户存在性判断,防止因目标用户不在服务器触发报错
内容的提问来源于stack exchange,提问作者Salim
相关产品推荐
相关产品推荐

