【问题标题】:How to ignore same command after joining a Voice channel for bot discord.js加入机器人 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"})
            })
        }
    }

【问题讨论】:

    标签: discord.js


    【解决方案1】:

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

    您可以简单地使用:

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

    【讨论】:

    • 它会返回消息,但我仍然遇到同样的问题...在每个 ?zipfm 之后,机器人会再次开始播放音乐之前有一小段等待时间
    猜你喜欢
    • 2021-12-06
    • 1970-01-01
    • 2021-07-13
    • 1970-01-01
    • 2019-01-03
    • 2023-02-25
    • 1970-01-01
    • 1970-01-01
    • 2021-05-03
    相关资源
    最近更新 更多