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:
Essem 2022-08-27 13:27:42 -05:00
parent e8337c40f4
commit 3392c3c89e
No known key found for this signature in database
GPG key ID: 7D497397CC3A2A8C
6 changed files with 64 additions and 37 deletions

View file

@ -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);