加入机器人 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 Bot 将语音频道中的所有人静音