client.on("ready", () => {
const channel = client.channels.cache.get("IDhere");
if (!channel) return console.error("The channel does not exist!");
channel.join().then(connection => {
// Yay, it worked!
console.log("Successfully connected.");
}).catch(e => {
// Oh no, it errored! Let's log it to console :)
console.error(e);
});
});
如何循环这个?这样,如果有人断开机器人的连接,它会再次重新连接。
答案 0 :(得分:0)
正如 Worthy Alpaca 所建议的,您可以使用 voiceStateUpdate
事件,它传递两个参数:新的 voice state 和旧的语音状态。
如果您检查以下条件:
oldState.channelID
存在newState.channelID
不存在oldState.id
等于机器人的 id (client.user.id
)您会知道机器人离开了语音频道。此时,您可以使用 oldState.channel.join()
重新加入。 但是,在执行此操作之前,您总是希望检查 oldState.channel.joinable
是否为真。这将说明机器人无法重新加入的情况。可能是频道被删除了,或者机器人被踢出了公会,或者机器人失去了 CONNECT
或 VIEW_CHANNELS
权限等。