加入机器人 discord.js 的语音频道后如何忽略相同的命令

Posted

技术标签:

【中文标题】加入机器人 discord.js 的语音频道后如何忽略相同的命令【英文标题】:How to ignore same command after joining a Voice channel for bot discord.js 【发布时间】:2021-04-09 09:13:46 【问题描述】:

如何让机器人在加入语音频道后忽略相同的命令? 因此,如果具有权限的用户多次使用命令,机器人将忽略相同的命令,因为它已经加入了语音通道(机器人将忽略 ?zipfm,但不会忽略其他类似 ?disconnect 或 @ 987654323@)

我尝试发出冷却命令,但如果用户多次发送?zipfm 命令,bot 在每个命令后再次开始搜索dispatcher,因此我们需要在第一次使用后忽略该命令。

client.on('message', async(message, user) =>
    if (message.content === '?zipfm')
        
    const role = message.guild.roles.cache.find((r) => r.name === 'ZIP FM ????????')
    //--------------------------------------------------------------------------------------------------------
    if (!role) return message.channel.send(`ZIP FM rolė nėra sukurta. Rašyk \`?sukurti\` norint sukurti ZIP FM rolę!`).then(msg => 
        msg.delete(timeout:5000)
    )
    if (!message.member.roles.cache.has(role.id)) return message.channel.send(`Ši komanda yra leistina tik vartotojams turintiems $role rolę.`).then(msg => 
      msg.delete(timeout:5000)
  )
        if (message.channel.type == "dm") return;
        if (message.member.voice.channel)
            message.member.voice.channel.join().then(connection => 
                connection.voice.setSelfDeaf(true);
                message.channel.send("Paleidžiama ZIP FM ????").then(msg => 
                    msg.delete(timeout:10000)
                )
                const dispatcher = connection.play('https://transliacija.zipfm.lt/zipfm128.mp3',filter: "audioonly")
            )
        
    

【问题讨论】:

【参考方案1】:

检查消息内容是否等于?zipfm后,您可以简单地使用GuildMember#voice()函数来确定客户端当前是否在语音通道内。

您可以简单地使用:

if (message.guild.me.voice) return message.channel.send('I'm already inside of a voice channel!');

【讨论】:

它会返回消息,但我仍然遇到同样的问题...在每个 ?zipfm 之后,机器人会再次开始播放音乐之前有一小段等待时间

以上是关于加入机器人 discord.js 的语音频道后如何忽略相同的命令的主要内容,如果未能解决你的问题,请参考以下文章

Discord.js 机器人无法离开语音频道

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

准备好加入语音频道(discord.js)

使用 Discord.js 使用 Discord Bot 将语音频道中的所有人静音

如何在 discord.js V12 中等待获取 X 人的所有语音频道?

从 twitch bot 调用 Discord.js 音乐问题找到语音频道