Improve VC leave handling, host now lets you get the current session host, swapped skip/sticker alias, updated xm plugin
This commit is contained in:
parent
e8337c40f4
commit
3392c3c89e
6 changed files with 64 additions and 37 deletions
|
@ -1,5 +1,6 @@
|
|||
// this is a method to wait for someone to rejoin a voice channel
|
||||
import { EventEmitter } from "events";
|
||||
import { random } from "./misc.js";
|
||||
|
||||
class AwaitRejoin extends EventEmitter {
|
||||
constructor(channel, anyone, memberID) {
|
||||
|
@ -14,14 +15,19 @@ class AwaitRejoin extends EventEmitter {
|
|||
this.bot.on("voiceChannelJoin", this.listener);
|
||||
this.bot.on("voiceChannelSwitch", this.listener);
|
||||
setTimeout(() => this.stop(), 10000);
|
||||
this.checkInterval = setInterval(() => this.verify({ id: memberID }, channel, true), 1000);
|
||||
}
|
||||
|
||||
verify(member, channel) {
|
||||
verify(member, channel, checked) {
|
||||
if (this.channel.id === channel.id) {
|
||||
if (this.member === member.id || this.anyone) {
|
||||
if ((this.member === member.id && this.channel.voiceMembers.has(member.id)) || (this.anyone && !checked)) {
|
||||
this.rejoined = true;
|
||||
this.stop(member);
|
||||
return true;
|
||||
} else if (this.anyone && (!checked || this.channel.voiceMembers.size > 1)) {
|
||||
this.rejoined = true;
|
||||
this.stop(random(this.channel.voiceMembers.filter((i) => i.id !== this.bot.user.id && !i.bot)));
|
||||
return true;
|
||||
}
|
||||
} else {
|
||||
return false;
|
||||
|
@ -31,6 +37,7 @@ class AwaitRejoin extends EventEmitter {
|
|||
stop(member) {
|
||||
if (this.ended) return;
|
||||
this.ended = true;
|
||||
clearInterval(this.checkInterval);
|
||||
this.bot.removeListener("voiceChannelJoin", this.listener);
|
||||
this.bot.removeListener("voiceChannelSwitch", this.listener);
|
||||
this.emit("end", this.rejoined, member);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue