Skip to content

Commit

Permalink
add discord timestamp to broascast message
Browse files Browse the repository at this point in the history
  • Loading branch information
cst0601 committed Mar 15, 2023
1 parent 7114594 commit feabe0d
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 14 deletions.
9 changes: 8 additions & 1 deletion src/main/java/com/alchemist/UpcomingStream.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import java.time.ZonedDateTime;

import net.dv8tion.jda.api.entities.Role;
import net.dv8tion.jda.api.utils.TimeFormat;
import net.dv8tion.jda.api.utils.messages.MessageCreateBuilder;
import net.dv8tion.jda.api.utils.messages.MessageCreateData;

Expand All @@ -27,9 +28,11 @@ public UpcomingStream(LiveStream liveStream, Role mentionRole) {
public MessageCreateData broadcast() {
if (state == StreamState.INIT) {
nextState();
Instant startTimeInstant = liveStream.getStreamStartTime().toInstant();
return new MessageCreateBuilder()
.addContent("頻道有新動靜!快去看看!\n")
//.append("Start time: " + TimeFormat.atInstant())
.addContent("預定開始時間: " + TimeFormat.DATE_TIME_LONG.atInstant(startTimeInstant))
.addContent(", " + TimeFormat.RELATIVE.atInstant(startTimeInstant) + "\n")
.addContent(getStreamUrl())
.build();
}
Expand Down Expand Up @@ -67,8 +70,12 @@ public MessageCreateData checkStreamStartTime(UpcomingStream stream) {
msg = broadcast();
}

Instant startTimeInstant = liveStream.getStreamStartTime().toInstant();

return new MessageCreateBuilder()
.addContent("直播開始時間更新了!")
.addContent("預定開始時間: " + TimeFormat.DATE_TIME_LONG.atInstant(startTimeInstant))
.addContent(", " + TimeFormat.RELATIVE.atInstant(startTimeInstant) + "\n")
.addContent(getStreamUrl())
.build();
}
Expand Down
41 changes: 28 additions & 13 deletions src/test/java/com/alchemist/TestUpcomingStream.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,46 +7,61 @@
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;

import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

import net.dv8tion.jda.api.utils.messages.MessageCreateData;


class TestUpcomingStream {

private String getTime(int bias) {
ZonedDateTime time = ZonedDateTime.now(ZoneId.of("UTC"));
return DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSX").format(
time.plusMinutes(bias));
}
private ZonedDateTime now;

private UpcomingStream createTestStream(int bias) {
private UpcomingStream createTestStream(ZonedDateTime time) {
LiveStream liveStream = null;
try {
liveStream = new LiveStream("さくらみこ", "9_oc4fi_VJQ",
"【 マリオカート8DX 】耐久1位を取るまで終われまてん開幕🏆!!!!!!!【ホロライブ/さくらみこ】",
getTime(bias), "Miko Ch. さくらみこ");
DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSX").format(time), "Miko Ch. さくらみこ");
} catch (ParseException e) {
e.printStackTrace();
fail("time parse failed when creating liveStream");
}
return new UpcomingStream(liveStream, new MockRole());
}

@BeforeEach
private void init() {
now = ZonedDateTime.now(ZoneId.of("UTC"));
}

@Test
void testBroadcastToNotified() {
UpcomingStream upcomingStream = createTestStream(1);
UpcomingStream upcomingStream = createTestStream(now.plusMinutes(1));
MessageCreateData message = upcomingStream.broadcast();

assertEquals("頻道有新動靜!快去看看!\nhttps://www.youtube.com/watch?v=9_oc4fi_VJQ",
message.getContent());
assertEquals(String.format(
"頻道有新動靜!快去看看!\n"
+ "預定開始時間: <t:%s:F>, <t:%s:R>\n"
+ "https://www.youtube.com/watch?v=9_oc4fi_VJQ",
now.plusMinutes(1).toInstant().toEpochMilli() / 1000L,
now.plusMinutes(1).toInstant().toEpochMilli() / 1000L
),
message.getContent());
}

@Test
void testBroadcastToUpcoming() {
UpcomingStream upcomingStream = createTestStream(4);
UpcomingStream upcomingStream = createTestStream(now.plusMinutes(4));

String broadcastContent = String.format(
"頻道有新動靜!快去看看!\n"
+ "預定開始時間: <t:%s:F>, <t:%s:R>\n"
+ "https://www.youtube.com/watch?v=9_oc4fi_VJQ",
now.plusMinutes(4).toInstant().toEpochMilli() / 1000L,
now.plusMinutes(4).toInstant().toEpochMilli() / 1000L);

assertEquals("頻道有新動靜!快去看看!\nhttps://www.youtube.com/watch?v=9_oc4fi_VJQ",
assertEquals(broadcastContent,
upcomingStream.broadcast().getContent());
assertEquals("再過五分鐘配信開始!\nhttps://www.youtube.com/watch?v=9_oc4fi_VJQ",
upcomingStream.broadcast().getContent());
Expand All @@ -55,7 +70,7 @@ void testBroadcastToUpcoming() {

@Test
void testBroadcastToStarted() {
UpcomingStream upcomingStream = createTestStream(-1);
UpcomingStream upcomingStream = createTestStream(now.plusMinutes(-1));
assertTrue(upcomingStream.hasStarted());
assertNull(upcomingStream.broadcast());
}
Expand Down

0 comments on commit feabe0d

Please sign in to comment.