如何检测Discord用户加入指定语音频道并向自己发送私信通知
Discord语音频道加入私信通知实现方案
前置检查
- 首先在Discord开发者平台的Bot管理页,开启
Server Members Intent和Message Content Intent两个权限开关,否则Bot无法正常获取用户状态、发送私信 - 邀请Bot进入服务器时,确保已经授予Bot发送消息的相关权限
修改后可直接使用的代码
@bot.event async def on_voice_state_update(member, before, after): # 替换为你自己的用户ID,用于接收通知私信 my_user_id = 747390765428113418 target_user = bot.get_user(my_user_id) # 替换为你要监听的指定语音频道ID target_voice_channel_id = 123456789012345678 # 判断逻辑:用户之前不在任何语音频道,现在加入的是目标指定语音频道 if before.channel is None and after.channel is not None and after.channel.id == target_voice_channel_id: # 控制台打印保留 print(f"{member.name} 加入了指定语音频道") # 发送私信逻辑 try: await target_user.send(f"通知:用户 {member.name} 已加入指定语音频道 {after.channel.name}") except Exception as e: print(f"私信发送失败,错误信息:{e}")
配置说明
- 上述代码中
target_voice_channel_id需要替换为你要监听的语音频道实际ID,获取方法:打开Discord设置-高级-开启开发者模式,右键对应语音频道选择「复制ID」即可 - 如果你不需要限定指定频道,只要有人加入服务器任意语音频道都通知,删掉代码判断条件里的
and after.channel.id == target_voice_channel_id部分即可
常见问题排查:如果私信发送失败,首先确认你和Bot在同一个服务器内,其次检查你的Discord隐私设置中,是否开启了对应服务器的「允许来自服务器成员的私信」选项。
内容的提问来源于stack exchange,提问作者Lost_MY_Skill
相关产品推荐
相关产品推荐

