当用户使用 Discord.JS 加入 VC 时发送 DM

Posted

技术标签:

【中文标题】当用户使用 Discord.JS 加入 VC 时发送 DM【英文标题】:Send DM when a user joins a VC using Discord.JS 【发布时间】:2021-04-24 09:26:58 【问题描述】:

堆栈溢出(如果这个问题已经被问过,我很抱歉,我不相信它已经问过了,但提前,以防万一):

我正在使用 Discord.JS 和 Node.JS 制作一个不和谐机器人。我想制作一个机器人来检测用户何时加入 VC,然后向该用户发送 DM。我已经找到了检测代码:

const Discord = require('discord.js');
const bot = new Discord.Client();

bot.login("token");

bot.once('ready', () =>
    console.log(`Bot ready, logged in as $bot.user.tag!`);
)

bot.on('voiceStateUpdate', (oldMember, newMember) => 
    let newUserChannel = newMember.channelID;
    let oldUserChannel = oldMember.channelID;
 
    if(newUserChannel === "channel id")
     
        // User Joins a voice channel
        console.log("User joined vc with id "+newUserChannel)
        
    
    else
        // User leaves a voice channel
        console.log("Left vc");
    
 );

但我无法向用户(我假设由 newMember 代表)发送 DM。有人可以提供一些帮助吗?谢谢!

【问题讨论】:

您需要什么帮助?请在您的问题中说明。 【参考方案1】:

您可以使用您获得的VoiceState 实例的.member 属性来获取已加入语音频道的用户。然后只需在语音通道用户上调用.send() 方法向他们发送DM。看看下面的示例代码:

bot.on('voiceStateUpdate', (oldState, newState) => 
  const newChannelID = newState.channelID;

  if (newChannelID === "channel id") 
    console.log("User has joined voice channel with id " + newChannelID);

    const member = newState.member;

    member.send('Hi there! Welcome to the voice channel!');
   else 
    console.log("User left or didn't join the channel matching the given ID");
  
);

试一试看看效果如何

【讨论】:

以上是关于当用户使用 Discord.JS 加入 VC 时发送 DM的主要内容,如果未能解决你的问题,请参考以下文章

Discord.js 尝试在用户加入语音频道时发送消息

Discord.js 在文本频道中加入/离开语音频道通知

Discord.js 音乐机器人加入然后离开

当有人使用 discord.js 加入服务器时发送欢迎消息

Discord.js 机器人加入然后离开

Discord Bot 使用 Discord.js 在 X 秒后离开 VC