Skip to content

Commit 10793dd

Browse files
Merge pull request #16 from brendonmiranda/1.2.0-rc
1.2.0 rc
2 parents e6c6a58 + fe1448e commit 10793dd

38 files changed

+951
-445
lines changed

.github/workflows/dozeapp-preprod.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,13 @@ jobs:
2929
run: ./gradlew dockerPushDockerHub
3030

3131
- name: Docker pull published image
32-
run: docker pull evelynvieira/dozeapp:1.1.1
32+
run: docker pull evelynvieira/dozeapp:1.2.0
3333

3434
- name: Docker Login on Heroku
3535
run: docker login --username=_ --password=${{ secrets.PREPROD_HEROKU_KEY }} registry.heroku.com
3636

3737
- name: Docker tag on Heroku
38-
run: docker tag evelynvieira/dozeapp:1.1.1 registry.heroku.com/dozeapp-heroku-preprod/worker
38+
run: docker tag evelynvieira/dozeapp:1.2.0 registry.heroku.com/dozeapp-heroku-preprod/worker
3939

4040
- name: Docker push on Heroku
4141
run: docker push registry.heroku.com/dozeapp-heroku-preprod/worker

.github/workflows/dozeapp-prod.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,13 @@ jobs:
2929
run: ./gradlew dockerPushDockerHub
3030

3131
- name: Docker pull published image
32-
run: docker pull evelynvieira/dozeapp:1.1.1
32+
run: docker pull evelynvieira/dozeapp:1.2.0
3333

3434
- name: Docker Login on Heroku
3535
run: docker login --username=_ --password=${{ secrets.HEROKU_KEY }} registry.heroku.com
3636

3737
- name: Docker tag on Heroku
38-
run: docker tag evelynvieira/dozeapp:1.1.1 registry.heroku.com/dozeapp-heroku/worker
38+
run: docker tag evelynvieira/dozeapp:1.2.0 registry.heroku.com/dozeapp-heroku/worker
3939

4040
- name: Docker push on Heroku
4141
run: docker push registry.heroku.com/dozeapp-heroku/worker

Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,4 @@ COPY ${START_SCRIPT} start.sh
1111

1212
ENTRYPOINT ["./start.sh"]
1313

14-
CMD ["${BOT_OWNER}", "${BOT_TOKEN}", "${BOT_PREFIX}", "${BOT_INACTIVITY_TIME}"]
14+
CMD ["${BOT_OWNER}", "${BOT_TOKEN}", "${BOT_PREFIX}", "${BOT_INACTIVE_THRESHOLD}", "${BOT_TASK_INACTIVE_FIXED_DELAY}", "${BOT_RABBIT_HOSTNAME}", "${BOT_RABBIT_USERNAME}", "${BOT_RABBIT_PASSWORD}", "${BOT_RABBIT_VIRTUALHOST}", "${BOT_RABBIT_CONNECTION_TIMEOUT}", "${BOT_RABBIT_REQUEST_HEARTBEAT}", "${BOT_RABBIT_QUEUE_TTL}"]

build.gradle

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ plugins {
1717
apply plugin: 'io.spring.javaformat'
1818

1919
group = 'io.github.brendonmiranda'
20-
version = '1.1.1'
20+
version = '1.2.0'
2121
sourceCompatibility = '13'
2222

2323
configurations {
@@ -41,10 +41,12 @@ dependencies {
4141
implementation 'net.dv8tion:JDA:4.1.1_137'
4242
implementation 'com.jagrosh:jda-utilities:3.0.3'
4343
implementation 'com.sedmelluq:lavaplayer:1.3.50'
44+
implementation 'org.springframework.boot:spring-boot-starter-amqp'
4445

4546
testImplementation('org.springframework.boot:spring-boot-starter-test') {
4647
exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
4748
}
49+
testImplementation 'org.springframework.amqp:spring-rabbit-test'
4850
}
4951

5052
docker {

src/main/java/io/github/brendonmiranda/javabot/JavaBotApplication.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@
22

33
import org.springframework.boot.SpringApplication;
44
import org.springframework.boot.autoconfigure.SpringBootApplication;
5+
import org.springframework.scheduling.annotation.EnableScheduling;
56

67
@SpringBootApplication
8+
@EnableScheduling
79
public class JavaBotApplication {
810

911
public static void main(String[] args) {
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,29 @@
1-
package io.github.brendonmiranda.javabot.listener.cmd.music;
1+
package io.github.brendonmiranda.javabot.command;
22

3-
import com.jagrosh.jdautilities.command.Command;
43
import com.jagrosh.jdautilities.command.CommandEvent;
5-
import io.github.brendonmiranda.javabot.service.LifeCycleService;
64
import net.dv8tion.jda.api.entities.Guild;
75
import net.dv8tion.jda.api.entities.VoiceChannel;
86
import net.dv8tion.jda.api.managers.AudioManager;
97
import org.slf4j.Logger;
108
import org.slf4j.LoggerFactory;
9+
import org.springframework.stereotype.Component;
1110

1211
/**
1312
* @author brendonmiranda
1413
*/
14+
@Component
1515
public class JoinCmd extends MusicCmd {
1616

1717
private static final Logger logger = LoggerFactory.getLogger(JoinCmd.class);
1818

19-
private final LifeCycleService lifeCycleService;
20-
21-
public JoinCmd(LifeCycleService lifeCycleService) {
19+
public JoinCmd() {
2220
this.name = "join";
2321
this.help = "joins you on the channel";
24-
this.lifeCycleService = lifeCycleService; // todo: inject it
2522
}
2623

2724
/**
2825
* It was overrode in order to avoid validations from MusicCmd which must not be
29-
* applied to JoinCmd.
26+
* applied to Join Command.
3027
* @param event
3128
*/
3229
@Override
@@ -45,11 +42,10 @@ public void execute(CommandEvent event) {
4542
@Override
4643
public void command(CommandEvent event) {
4744
VoiceChannel memberVoiceChannel = event.getEvent().getMember().getVoiceState().getChannel();
48-
Guild guild = event.getGuild();
49-
AudioManager audioManager = guild.getAudioManager();
45+
Guild guild = getGuild(event);
46+
AudioManager audioManager = getAudioManager(guild);
5047

5148
audioManager.openAudioConnection(memberVoiceChannel);
52-
lifeCycleService.scheduleDisconnectByInactivityTask(guild);
5349
}
5450

5551
}

src/main/java/io/github/brendonmiranda/javabot/listener/cmd/music/MusicCmd.java renamed to src/main/java/io/github/brendonmiranda/javabot/command/MusicCmd.java

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
1-
package io.github.brendonmiranda.javabot.listener.cmd.music;
1+
package io.github.brendonmiranda.javabot.command;
22

33
import com.jagrosh.jdautilities.command.Command;
44
import com.jagrosh.jdautilities.command.CommandEvent;
5-
import io.github.brendonmiranda.javabot.service.LifeCycleService;
5+
import com.sedmelluq.discord.lavaplayer.player.AudioPlayer;
6+
import io.github.brendonmiranda.javabot.listener.AudioSendHandlerImpl;
7+
import net.dv8tion.jda.api.entities.Guild;
68
import net.dv8tion.jda.api.entities.VoiceChannel;
79
import net.dv8tion.jda.api.managers.AudioManager;
810

9-
import static io.github.brendonmiranda.javabot.service.LifeCycleService.*;
10-
1111
/**
1212
* @author brendonmiranda
1313
*/
@@ -41,15 +41,25 @@ protected void execute(CommandEvent event) {
4141
return;
4242
}
4343

44-
/*
45-
* Cancel any disconnectByInactivityTask scheduled previously given that a command
46-
* has been triggered
47-
*/
48-
timerTasksQueue.forEach(task -> task.cancel());
49-
5044
command(event);
5145
}
5246

47+
protected AudioSendHandlerImpl getAudioSendHandler(Guild guild) {
48+
return (AudioSendHandlerImpl) guild.getAudioManager().getSendingHandler();
49+
}
50+
51+
protected AudioPlayer getAudioPlayer(AudioSendHandlerImpl audioSendHandler) {
52+
return audioSendHandler.getAudioPlayer();
53+
}
54+
55+
protected Guild getGuild(CommandEvent event) {
56+
return event.getGuild();
57+
}
58+
59+
protected AudioManager getAudioManager(Guild guild) {
60+
return guild.getAudioManager();
61+
}
62+
5363
public abstract void command(CommandEvent event);
5464

5565
}
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package io.github.brendonmiranda.javabot.command;
2+
3+
import com.jagrosh.jdautilities.command.CommandEvent;
4+
import com.sedmelluq.discord.lavaplayer.player.AudioPlayer;
5+
import com.sedmelluq.discord.lavaplayer.track.AudioTrack;
6+
import io.github.brendonmiranda.javabot.listener.AudioSendHandlerImpl;
7+
import org.slf4j.Logger;
8+
import org.slf4j.LoggerFactory;
9+
import org.springframework.stereotype.Component;
10+
11+
/**
12+
* @author evelynvieira
13+
*/
14+
@Component
15+
public class NowPlayingCmd extends MusicCmd {
16+
17+
private static final Logger logger = LoggerFactory.getLogger(NowPlayingCmd.class);
18+
19+
public NowPlayingCmd() {
20+
this.name = "now";
21+
this.help = "shows the song which is playing in the moment";
22+
}
23+
24+
@Override
25+
public void command(CommandEvent event) {
26+
AudioSendHandlerImpl audioSendHandler = getAudioSendHandler(event.getGuild());
27+
28+
if (audioSendHandler == null) {
29+
event.replyError("There is no track playing");
30+
return;
31+
}
32+
33+
AudioPlayer audioPlayer = getAudioPlayer(audioSendHandler);
34+
35+
if (audioPlayer.getPlayingTrack() != null) {
36+
AudioTrack audioTrack = audioPlayer.getPlayingTrack();
37+
event.replySuccess("Now playing the track **" + audioTrack.getInfo().title + "**.");
38+
}
39+
else {
40+
event.replyWarning("There is no track playing");
41+
}
42+
}
43+
44+
}
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package io.github.brendonmiranda.javabot.command;
2+
3+
import com.jagrosh.jdautilities.command.CommandEvent;
4+
import com.sedmelluq.discord.lavaplayer.player.AudioPlayer;
5+
import io.github.brendonmiranda.javabot.listener.AudioSendHandlerImpl;
6+
import org.springframework.stereotype.Component;
7+
8+
/**
9+
* @author evelynvieira
10+
*/
11+
@Component
12+
public class PauseCmd extends MusicCmd {
13+
14+
public PauseCmd() {
15+
this.name = "pause";
16+
this.help = "pauses the current song";
17+
}
18+
19+
public void command(CommandEvent event) {
20+
AudioSendHandlerImpl audioSendHandler = getAudioSendHandler(event.getGuild());
21+
22+
if (audioSendHandler == null) {
23+
event.replyError("There is no track playing to pause.");
24+
return;
25+
}
26+
27+
AudioPlayer audioPlayer = getAudioPlayer(audioSendHandler);
28+
29+
if (audioPlayer.isPaused()) {
30+
// todo: instantiate ResumeCmd and use it instead
31+
audioPlayer.setPaused(false);
32+
event.replySuccess("Resumed **" + audioPlayer.getPlayingTrack().getInfo().title + "**.");
33+
return;
34+
}
35+
36+
if (audioPlayer.getPlayingTrack() != null) {
37+
audioPlayer.setPaused(true);
38+
event.replySuccess("Paused **" + audioPlayer.getPlayingTrack().getInfo().title + "**. Type `"
39+
+ event.getClient().getPrefix() + " resume` to unpause!");
40+
}
41+
}
42+
43+
}

src/main/java/io/github/brendonmiranda/javabot/listener/cmd/music/PlayCmd.java renamed to src/main/java/io/github/brendonmiranda/javabot/command/PlayCmd.java

Lines changed: 20 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,38 @@
1-
package io.github.brendonmiranda.javabot.listener.cmd.music;
1+
package io.github.brendonmiranda.javabot.command;
22

33
import com.jagrosh.jdautilities.command.CommandEvent;
44
import com.jagrosh.jdautilities.commons.waiter.EventWaiter;
55
import com.sedmelluq.discord.lavaplayer.player.AudioPlayer;
66
import com.sedmelluq.discord.lavaplayer.player.AudioPlayerManager;
7-
import io.github.brendonmiranda.javabot.listener.audio.AudioEventListener;
8-
import io.github.brendonmiranda.javabot.listener.audio.AudioLoadResultHandlerImpl;
7+
import io.github.brendonmiranda.javabot.listener.AudioEventListener;
8+
import io.github.brendonmiranda.javabot.listener.PlayResultHandler;
9+
import io.github.brendonmiranda.javabot.service.AudioQueueService;
910
import org.slf4j.Logger;
1011
import org.slf4j.LoggerFactory;
12+
import org.springframework.beans.factory.annotation.Autowired;
13+
import org.springframework.stereotype.Component;
1114

1215
/**
1316
* @author brendonmiranda
1417
*/
18+
@Component
1519
public class PlayCmd extends MusicCmd {
1620

1721
private static final Logger logger = LoggerFactory.getLogger(PlayCmd.class);
1822

19-
private final AudioPlayerManager audioPlayerManager;
23+
@Autowired
24+
private AudioQueueService audioQueueService;
2025

21-
private final AudioEventListener audioListener; // todo remove it. Instantiate in
22-
// command method
26+
@Autowired
27+
private AudioPlayerManager audioPlayerManager;
2328

24-
private final EventWaiter eventWaiter;
29+
@Autowired
30+
private EventWaiter eventWaiter;
2531

26-
public PlayCmd(AudioPlayerManager audioPlayerManager, AudioEventListener audioListener, EventWaiter eventWaiter) {
27-
this.audioPlayerManager = audioPlayerManager;
28-
this.audioListener = audioListener;
29-
this.eventWaiter = eventWaiter;
32+
@Autowired
33+
private AudioEventListener audioEventListener;
34+
35+
public PlayCmd() {
3036
this.name = "play";
3137
this.help = "plays or queue a song";
3238
}
@@ -36,11 +42,11 @@ public void command(CommandEvent event) {
3642
logger.debug("PlayCmd loading track: {}", event.getArgs());
3743

3844
AudioPlayer audioPlayer = audioPlayerManager.createPlayer();
39-
audioPlayer.addListener(audioListener);
45+
audioPlayer.addListener(audioEventListener);
4046

4147
event.reply("Searching...", (message) -> {
42-
audioPlayerManager.loadItemOrdered(event.getGuild(), event.getArgs(), new AudioLoadResultHandlerImpl(
43-
audioPlayer, event, audioPlayerManager, eventWaiter, message, false));
48+
audioPlayerManager.loadItemOrdered(event.getGuild(), event.getArgs(), new PlayResultHandler(audioPlayer,
49+
event, audioPlayerManager, eventWaiter, message, false, audioQueueService));
4450
});
4551

4652
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package io.github.brendonmiranda.javabot.command;
2+
3+
import com.jagrosh.jdautilities.command.CommandEvent;
4+
import com.sedmelluq.discord.lavaplayer.player.AudioPlayer;
5+
import io.github.brendonmiranda.javabot.listener.AudioSendHandlerImpl;
6+
import org.slf4j.Logger;
7+
import org.slf4j.LoggerFactory;
8+
import org.springframework.stereotype.Component;
9+
10+
/**
11+
* @author evelynvieira
12+
*/
13+
@Component
14+
public class ResumeCmd extends MusicCmd {
15+
16+
private static final Logger logger = LoggerFactory.getLogger(ResumeCmd.class);
17+
18+
public ResumeCmd() {
19+
this.name = "resume";
20+
this.help = "resumes the current song";
21+
}
22+
23+
public void command(CommandEvent event) {
24+
AudioSendHandlerImpl audioSendHandler = getAudioSendHandler(event.getGuild());
25+
26+
if (audioSendHandler == null) {
27+
event.replyError("There is no track to resume.");
28+
return;
29+
}
30+
31+
AudioPlayer audioPlayer = getAudioPlayer(audioSendHandler);
32+
33+
if (audioPlayer.getPlayingTrack() != null && audioPlayer.isPaused()) {
34+
audioPlayer.setPaused(false);
35+
event.replySuccess("Resumed **" + audioPlayer.getPlayingTrack().getInfo().title + "**.");
36+
}
37+
38+
}
39+
40+
}

0 commit comments

Comments
 (0)