问题描述
我目前正在开发一种discord bot,该bot可以使语音聊天的一部分静音/默认。它有效,但是我遇到了一些问题。当机器人试图使一大群玩家静音时,他们会被一个一个地静音。当其中一个播放器的网络连接速度较慢时,他们下面的所有播放器都必须等待,直到该播放器被静音为止。这意味着对5个玩家进行静音/取消静音可能需要10秒钟的时间,对于我用于此目的的时间来说太长了。
静音/震耳聋过程的简化代码:
this.players.forEach(player => {
// If player belongs to group that has to be muted
if ([condition]) {
// Mute and undeafen player
player.voice.setMute(true)
player.voice.setDeaf(false)
}
})
(其中“玩家”是包含GuildMember对象的数组)
我的问题是,有没有办法加快这一过程?我的解决方案是使所有播放器独立静音,但是我不知道如何实现。我正在考虑使用多线程,但是我不确定这是否还能解决问题,而且我不知道Java和discord.js如何处理多线程,因为我对JS还是很陌生。那么,有谁知道如何解决这个问题?谢谢!
解决方法
我认为多个进程是否缓慢取决于您的bot服务器和不和谐的服务器(您的bot处于)。不是您用户的网络。
基本上js是同步的,您的过程几乎同时完成。
(如果需要异步任务,可以使用then
,Promise
和async await
来完成。)
减轻后顾之忧。
谢谢。