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

如何用Discord.js检测用户被谁移出语音频道并实现报复功能

使用Discord.js实现检测语音频道移除并执行报复的方案

完全可以实现你想要的功能,核心是通过监听成员状态更新事件,结合审计日志识别操作发起者,再执行对应的报复逻辑,具体步骤如下:

1. 监听成员语音频道变更事件

利用Discord.js的guildMemberUpdate事件,对比成员更新前后的语音频道状态。当指定用户从某个语音频道变为不在任何频道时,触发后续的操作者识别逻辑:

const { Client, GatewayIntentBits } = require('discord.js');
const client = new Client({
  intents: [
    GatewayIntentBits.Guilds,
    GatewayIntentBits.GuildMembers,
    GatewayIntentBits.GuildVoiceStates
  ]
});

// 替换成你要监控的用户ID
const TARGET_USER_ID = '你的用户ID';

client.on('guildMemberUpdate', (oldMember, newMember) => {
  // 检查是否是目标用户,且确实被移出了语音频道
  if (newMember.id === TARGET_USER_ID && oldMember.voice.channel && !newMember.voice.channel) {
    getRemovalOperator(newMember.guild, oldMember.id)
      .then(operator => {
        if (operator) {
          performRetaliation(operator);
        }
      })
      .catch(err => console.error('获取操作者信息失败:', err));
  }
});

2. 从审计日志识别操作发起者

用户被移出语音频道属于公会管理操作,会被记录在审计日志中。通过fetchAuditLogs方法筛选对应条目,提取执行者:

async function getRemovalOperator(guild, targetUserId) {
  // 获取最近的成员更新类审计日志
  const auditLogs = await guild.fetchAuditLogs({ type: 'MEMBER_UPDATE', limit: 10 });
  
  // 筛选出针对目标用户、涉及语音频道移除的日志条目
  const relevantLog = auditLogs.entries.find(entry => {
    return entry.target.id === targetUserId &&
           entry.changes.some(change => {
             return change.key === 'voice_channel_id' && change.new === null;
           });
  });
  
  return relevantLog?.executor;
}

3. 实现报复逻辑

根据需求编写报复操作,比如将操作者移出当前语音频道(需机器人拥有MoveMembers权限):

function performRetaliation(operator) {
  if (operator.voice.channel) {
    operator.voice.disconnect()
      .then(() => console.log(`已对操作者 ${operator.tag} 执行报复`))
      .catch(err => console.error('报复操作失败:', err));
  } else {
    console.log('操作者不在语音频道,无法执行报复');
  }
}

// 记得登录机器人
client.login('你的机器人Token');

关键注意事项

  • 必须在Discord开发者后台开启GuildMembers和GuildVoiceStates意图,否则无法监听相关事件。
  • 机器人需要具备对应的权限:比如执行移出操作需要MoveMembers权限,禁言需要ManageRoles权限等。
  • 避免过度使用报复功能,违反Discord服务条款可能导致机器人账号被封禁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 11:13:54