mirror of
https://github.com/warengroup/eximiabots-radiox.git
synced 2024-11-10 05:00:18 +00:00
Fix Streamer class
This commit is contained in:
parent
d260c6ea4f
commit
9e165713ce
@ -1,14 +1,15 @@
|
|||||||
import logger from "../funcs/logger";
|
import logger from "../funcs/logger";
|
||||||
import { createAudioPlayer, createAudioResource, NoSubscriberBehavior } from "@discordjs/voice";
|
import { AudioPlayer, AudioPlayerStatus, createAudioPlayer, createAudioResource, NoSubscriberBehavior } from "@discordjs/voice";
|
||||||
import RadioClient from "../../Client";
|
import RadioClient from "../../Client";
|
||||||
import { station } from "./Stations";
|
import { station } from "./Stations";
|
||||||
|
|
||||||
export default class Streamer {
|
export default class Streamer {
|
||||||
map: Map<string, any>;
|
map: Map<string, AudioPlayer>;
|
||||||
mode: "auto" | "manual" = "manual";
|
mode: "auto" | "manual";
|
||||||
|
|
||||||
constructor() {
|
constructor() {
|
||||||
this.map = new Map();
|
this.map = new Map();
|
||||||
|
this.mode = "manual";
|
||||||
}
|
}
|
||||||
|
|
||||||
init(client: RadioClient){
|
init(client: RadioClient){
|
||||||
@ -28,9 +29,9 @@ export default class Streamer {
|
|||||||
if(this.mode == "auto"){
|
if(this.mode == "auto"){
|
||||||
if(!client.stations) return;
|
if(!client.stations) return;
|
||||||
|
|
||||||
client.stations.forEach((station: station) => {
|
for(const station of client.stations){
|
||||||
this.play(station);
|
this.play(station);
|
||||||
});
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -52,44 +53,40 @@ export default class Streamer {
|
|||||||
behaviors: {
|
behaviors: {
|
||||||
noSubscriber: NoSubscriberBehavior.Play,
|
noSubscriber: NoSubscriberBehavior.Play,
|
||||||
maxMissedFrames: Math.round(5000 / 20),
|
maxMissedFrames: Math.round(5000 / 20),
|
||||||
},
|
}
|
||||||
});
|
});
|
||||||
}
|
} else {
|
||||||
if(this.mode == "manual"){
|
|
||||||
audioPlayer = createAudioPlayer({
|
audioPlayer = createAudioPlayer({
|
||||||
behaviors: {
|
behaviors: {
|
||||||
noSubscriber: NoSubscriberBehavior.Stop,
|
noSubscriber: NoSubscriberBehavior.Stop,
|
||||||
maxMissedFrames: Math.round(5000 / 20),
|
maxMissedFrames: Math.round(5000 / 20),
|
||||||
},
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
this.map.set(station.name, audioPlayer);
|
this.map.set(station.name, audioPlayer);
|
||||||
}
|
}
|
||||||
|
|
||||||
const url = station.stream[station.stream.default];
|
const url = station.stream[station.stream.default];
|
||||||
const resource = createAudioResource(url);
|
const resource = createAudioResource(url);
|
||||||
audioPlayer.play(resource);
|
audioPlayer.play(resource);
|
||||||
|
|
||||||
audioPlayer
|
audioPlayer
|
||||||
.on('playing', () => {
|
.on(AudioPlayerStatus.Playing, () => {
|
||||||
logger('Streamer', station.name + " / " + "Playing");
|
logger('Streamer', station.name + " / " + "Playing");
|
||||||
})
|
})
|
||||||
.on('idle', () => {
|
.on(AudioPlayerStatus.Idle, () => {
|
||||||
logger('Streamer', station.name + " / " + "Idle");
|
logger('Streamer', station.name + " / " + "Idle");
|
||||||
audioPlayer.removeAllListeners();
|
|
||||||
if(this.mode == "manual" && audioPlayer.subscribers.length == 0) return;
|
|
||||||
this.play(station);
|
|
||||||
})
|
})
|
||||||
.on('paused', () => {
|
.on(AudioPlayerStatus.Paused, () => {
|
||||||
logger('Streamer', station.name + " / " + "Paused");
|
logger('Streamer', station.name + " / " + "Paused");
|
||||||
})
|
})
|
||||||
.on('buffering', () => {
|
.on(AudioPlayerStatus.Buffering, () => {
|
||||||
logger('Streamer', station.name + " / " + "Buffering");
|
logger('Streamer', station.name + " / " + "Buffering");
|
||||||
})
|
})
|
||||||
.on('autopaused', () => {
|
.on(AudioPlayerStatus.AutoPaused, () => {
|
||||||
logger('Streamer', station.name + " / " + "AutoPaused");
|
logger('Streamer', station.name + " / " + "AutoPaused");
|
||||||
})
|
})
|
||||||
.on('error', (error: string) => {
|
|
||||||
logger('Streamer', station.name + " / " + "Error" + "\n" + error);
|
|
||||||
});
|
|
||||||
return audioPlayer;
|
return audioPlayer;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -105,14 +102,14 @@ export default class Streamer {
|
|||||||
|
|
||||||
listen(station: station) {
|
listen(station: station) {
|
||||||
let audioPlayer = this.map.get(station.name);
|
let audioPlayer = this.map.get(station.name);
|
||||||
if(!audioPlayer || this.mode == "manual" && audioPlayer.subscribers.length == 0) audioPlayer = this.play(station);
|
if(!audioPlayer) audioPlayer = this.play(station);
|
||||||
return audioPlayer;
|
return audioPlayer;
|
||||||
}
|
}
|
||||||
|
|
||||||
leave(client: RadioClient) {
|
leave(client: RadioClient) {
|
||||||
if(!client.stations) return;
|
if(!client.stations) return;
|
||||||
client.stations.forEach((station: station) => {
|
for(const station of client.stations){
|
||||||
this.stop(station.name);
|
this.stop(station.name);
|
||||||
});
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user