使用Discord.js v12如何在指定频道删除指定用户的固定数量消息
Discord.js v12 批量删除指定用户消息解决方案
以下代码完全适配Discord.js v12.22.4版本,无过时语法
实现逻辑
先拉取频道内的近期消息,筛选出对应用户ID的消息后再执行批量删除,示例代码如下:
// 示例:删除指定用户最近3条消息 message.channel.messages.fetch({ limit: 100 }).then(fetchedMsgs => { // 替换为你要删除的目标用户ID const TARGET_USER_ID = '替换为目标用户的数字ID'; // 筛选目标用户消息,取前3条 const toDeleteMsgs = fetchedMsgs.filter(msg => msg.author.id === TARGET_USER_ID).first(3); // 执行批量删除,第二个参数设为true自动过滤14天以上无法删除的消息,避免报错 message.channel.bulkDelete(toDeleteMsgs, true) .then(deletedCount => console.log(`已删除${deletedCount.size}条目标用户消息`)) .catch(err => console.error('删除失败:', err)); });
注意事项
- 机器人账号必须拥有对应频道的
管理消息权限,否则会触发权限报错 - Discord API限制
bulkDelete仅支持删除14天以内的消息,超出时间范围的消息无法通过该方法批量删除 - 拉取消息的limit参数最大可设为100,如果目标用户发言频率较低,可以调高拉取的消息数量,避免筛选不出足够的目标消息
- 修改
.first(3)的数值即可调整删除的目标消息数量
内容的提问来源于stack exchange,提问作者lucasrvimieiro
相关产品推荐
相关产品推荐

