You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Discord.js如何检测重复Boost及Boost取消?

检测Discord服务器的重复Boost与Boost取消

重复Boost检测

Discord会在用户重复Boost服务器时发送系统消息,你可以通过监听messageCreate事件并判断消息类型来捕获这个行为,比匹配消息内容更可靠:

const { Client, MessageType } = require('discord.js');
const client = new Client({ intents: ['Guilds', 'GuildMessages', 'MessageContent'] });

client.on('messageCreate', (message) => {
  // 过滤非系统消息,只处理重复Boost的系统通知
  if (message.type === MessageType.UserPremiumGuildSubscriptionRenewal) {
    const boostedUser = message.mentions.users.first();
    if (boostedUser) {
      // 这里添加你的重复Boost处理逻辑
      console.log(`用户 ${boostedUser.tag} 完成了一次重复Boost`);
      // 例如:更新用户Boost次数、发送专属通知等
    }
  }
});

Boost取消检测

guildMemberUpdate事件可以捕获Boost取消行为,核心是对比用户更新前后的premium_since字段:当用户取消Boost时,旧成员对象的premium_since有值,新成员对象的premium_since会变为null。

client.on('guildMemberUpdate', (oldMember, newMember) => {
  // 检测用户从Boost状态变为非Boost状态
  if (oldMember.premium_since && !newMember.premium_since) {
    console.log(`用户 ${newMember.user.tag} 取消了服务器Boost`);
    // 这里添加取消Boost后的处理逻辑
    // 例如:移除Boost专属角色、记录取消次数等
  }
});

注意事项

  • 确保机器人启用了必要的意图:使用guildMemberUpdate需要开启GuildMembers意图,使用messageCreate需要开启GuildMessages和MessageContent意图(Discord.js v14+)。
  • 通过消息类型判断比匹配文本内容更稳定,能避免因服务器语言设置差异导致的匹配失败。

内容的提问来源于stack exchange,提问作者Furious Prospekt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 23:44:59