mirror of
https://github.com/Noratrieb/killua-bot.git
synced 2026-01-15 23:55:02 +01:00
multi-page departure lyrics
This commit is contained in:
parent
70fc06c69e
commit
734260ea11
7 changed files with 160 additions and 59 deletions
|
|
@ -1,5 +1,5 @@
|
||||||
package com.github.nilstrieb.cofig;
|
package com.github.nilstrieb.cofig;
|
||||||
|
|
||||||
public class Secrets {
|
public class Secrets {
|
||||||
public static final String TOKEN = "invite xp to your server";
|
public static final String TOKEN = "ODAxMDE1MjU0MDIzNzk4ODI1.YAahlg.u5MEQ_2bzQkVVZZYNJ5Q23Se5CU";
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -5,34 +5,47 @@ import com.github.nilstrieb.commands.handler.Command;
|
||||||
import com.github.nilstrieb.reactions.ReactionEventManager;
|
import com.github.nilstrieb.reactions.ReactionEventManager;
|
||||||
import com.github.nilstrieb.reactions.ReactionListener;
|
import com.github.nilstrieb.reactions.ReactionListener;
|
||||||
import com.github.nilstrieb.util.DepartureSong;
|
import com.github.nilstrieb.util.DepartureSong;
|
||||||
|
import com.github.nilstrieb.util.MultiPageEmbed;
|
||||||
|
import com.iwebpp.crypto.TweetNaclFast;
|
||||||
import net.dv8tion.jda.api.EmbedBuilder;
|
import net.dv8tion.jda.api.EmbedBuilder;
|
||||||
|
import net.dv8tion.jda.api.entities.Message;
|
||||||
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
|
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
|
||||||
import net.dv8tion.jda.api.events.message.react.MessageReactionAddEvent;
|
import net.dv8tion.jda.api.events.message.react.MessageReactionAddEvent;
|
||||||
import net.dv8tion.jda.api.events.message.react.MessageReactionRemoveEvent;
|
import net.dv8tion.jda.api.events.message.react.MessageReactionRemoveEvent;
|
||||||
|
|
||||||
public class DepartureCommand extends Command implements ReactionListener {
|
import java.util.HashMap;
|
||||||
|
|
||||||
|
public class DepartureCommand extends Command {
|
||||||
public DepartureCommand() {
|
public DepartureCommand() {
|
||||||
super("departure");
|
super("departure");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void called(MessageReceivedEvent event, String args) {
|
public void called(MessageReceivedEvent event, String args) {
|
||||||
EmbedBuilder builder = Config.getDefaultEmbed();
|
|
||||||
|
|
||||||
builder.setTitle("DEPARTURE - GALNERYUS")
|
final EmbedBuilder latinBuilder = Config.getDefaultEmbed();
|
||||||
.addField("Youtube Link: ", DepartureSong.DEPARTURE_YOUTUBE_LINK, false);
|
latinBuilder.setTitle("DEPARTURE - GALNERYUS")
|
||||||
reply(event, builder.build());
|
.addField("Youtube Link: ", "[Here](" + DepartureSong.DEPARTURE_YOUTUBE_LINK + ")", false)
|
||||||
reply(event, "Lyrics:\n" + DepartureSong.LYRICS_LATIN);
|
.addField("Spotify Link: ", "[Here](" + DepartureSong.DEPARTURE_SPOTIFY_LINK + ")", false)
|
||||||
//TODO add message id
|
.addField("LYRICS (Romanized)", "", false);
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
final EmbedBuilder japaneseBuilder = Config.getDefaultEmbed();
|
||||||
public void onReactionAdded(MessageReactionAddEvent event) {
|
japaneseBuilder.setTitle("DEPARTURE - GALNERYUS")
|
||||||
|
.addField("Youtube Link: ", "[Here](" + DepartureSong.DEPARTURE_YOUTUBE_LINK + ")", false)
|
||||||
|
.addField("Spotify Link: ", "[Here](" + DepartureSong.DEPARTURE_SPOTIFY_LINK + ")", false)
|
||||||
|
.addField("LYRICS (Japanese)", "", false);
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
for (int i = 0; i < DepartureSong.LYRICS_LATIN.length; i++) {
|
||||||
public void onReactionRemoved(MessageReactionRemoveEvent event) {
|
latinBuilder.addField("", DepartureSong.LYRICS_LATIN[i], false);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < DepartureSong.LYRICS_JAPANESE.length; i++) {
|
||||||
|
japaneseBuilder.addField("", DepartureSong.LYRICS_JAPANESE[i], false);
|
||||||
|
}
|
||||||
|
|
||||||
|
event.getTextChannel().sendMessage(latinBuilder.build()).queue((message -> {
|
||||||
|
new MultiPageEmbed(message, latinBuilder, japaneseBuilder);
|
||||||
|
}));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,8 @@ public class CommandListener extends ListenerAdapter {
|
||||||
@Override
|
@Override
|
||||||
public void onMessageReceived(@NotNull MessageReceivedEvent event) {
|
public void onMessageReceived(@NotNull MessageReceivedEvent event) {
|
||||||
System.out.println("[CListener] Received message: '" + event.getMessage().getContentRaw() + "'");
|
System.out.println("[CListener] Received message: '" + event.getMessage().getContentRaw() + "'");
|
||||||
CommandHandler.call(event);
|
if (!event.getAuthor().isBot()) {
|
||||||
|
CommandHandler.call(event);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -9,11 +9,15 @@ import org.jetbrains.annotations.NotNull;
|
||||||
public class ReactionEventListener extends ListenerAdapter {
|
public class ReactionEventListener extends ListenerAdapter {
|
||||||
@Override
|
@Override
|
||||||
public void onMessageReactionAdd(@NotNull MessageReactionAddEvent event) {
|
public void onMessageReactionAdd(@NotNull MessageReactionAddEvent event) {
|
||||||
ReactionEventManager.onReactionAdd(event);
|
if (!event.getUser().isBot()) {
|
||||||
|
ReactionEventManager.onReactionAdd(event);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onMessageReactionRemove(@NotNull MessageReactionRemoveEvent event) {
|
public void onMessageReactionRemove(@NotNull MessageReactionRemoveEvent event) {
|
||||||
ReactionEventManager.onReactionRemove(event);
|
if (!event.getUser().isBot()) {
|
||||||
|
ReactionEventManager.onReactionRemove(event);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,25 +1,23 @@
|
||||||
package com.github.nilstrieb.reactions;
|
package com.github.nilstrieb.reactions;
|
||||||
|
|
||||||
import net.dv8tion.jda.api.entities.Message;
|
|
||||||
import net.dv8tion.jda.api.events.message.react.MessageReactionAddEvent;
|
import net.dv8tion.jda.api.events.message.react.MessageReactionAddEvent;
|
||||||
import net.dv8tion.jda.api.events.message.react.MessageReactionRemoveEvent;
|
import net.dv8tion.jda.api.events.message.react.MessageReactionRemoveEvent;
|
||||||
import org.jetbrains.annotations.NotNull;
|
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
|
||||||
public class ReactionEventManager {
|
public class ReactionEventManager {
|
||||||
private static HashMap<String, ReactionListener> currentReactions = new HashMap<>();
|
private static final HashMap<Long, ReactionListener> currentReactions = new HashMap<>();
|
||||||
|
|
||||||
public static void addMessage(Message message, ReactionListener listener){
|
public static void addMessage(long message, ReactionListener listener){
|
||||||
currentReactions.put(message.getId(), listener);
|
currentReactions.put(message, listener);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void removeMessage(Message message){
|
public static void removeMessage(String message){
|
||||||
currentReactions.remove(message.getId());
|
currentReactions.remove(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void onReactionAdd(MessageReactionAddEvent event){
|
public static void onReactionAdd(MessageReactionAddEvent event){
|
||||||
String message = event.getMessageId();
|
long message = event.getMessageIdLong();
|
||||||
ReactionListener listener = currentReactions.get(message);
|
ReactionListener listener = currentReactions.get(message);
|
||||||
if (listener != null) {
|
if (listener != null) {
|
||||||
listener.onReactionAdded(event);
|
listener.onReactionAdded(event);
|
||||||
|
|
@ -27,7 +25,7 @@ public class ReactionEventManager {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void onReactionRemove(MessageReactionRemoveEvent event){
|
public static void onReactionRemove(MessageReactionRemoveEvent event){
|
||||||
String message = event.getMessageId();
|
long message = event.getMessageIdLong();
|
||||||
ReactionListener listener = currentReactions.get(message);
|
ReactionListener listener = currentReactions.get(message);
|
||||||
if (listener != null) {
|
if (listener != null) {
|
||||||
listener.onReactionRemoved(event);
|
listener.onReactionRemoved(event);
|
||||||
|
|
|
||||||
|
|
@ -3,12 +3,16 @@ package com.github.nilstrieb.util;
|
||||||
public class DepartureSong {
|
public class DepartureSong {
|
||||||
|
|
||||||
public static final String DEPARTURE_YOUTUBE_LINK = "https://www.youtube.com/watch?v=VxFUs1pcWzU";
|
public static final String DEPARTURE_YOUTUBE_LINK = "https://www.youtube.com/watch?v=VxFUs1pcWzU";
|
||||||
|
public static final String DEPARTURE_SPOTIFY_LINK = "https://open.spotify.com/track/5sjoJa0YmBCCPMrBPsBMge?si=Qb-eIMuBRD6Ms62cFf3yaw";
|
||||||
|
|
||||||
public static final String LYRICS_JAPANESE =
|
public static final String[] LYRICS_JAPANESE =
|
||||||
"""
|
{"""
|
||||||
大地を踏みしめて
|
大地を踏みしめて
|
||||||
君は目覚めていく
|
君は目覚めていく
|
||||||
天使の微笑みで 連れ出して!
|
天使の微笑みで 連れ出して!
|
||||||
|
""",
|
||||||
|
|
||||||
|
"""
|
||||||
孤独でも 一人じゃないさ
|
孤独でも 一人じゃないさ
|
||||||
生まれてきたことに
|
生まれてきたことに
|
||||||
必ず意味がある
|
必ず意味がある
|
||||||
|
|
@ -24,6 +28,9 @@ public class DepartureSong {
|
||||||
(you can smile!)
|
(you can smile!)
|
||||||
"始まり"はいつでも遅くないさ
|
"始まり"はいつでも遅くないさ
|
||||||
何度でも立ち上がれ!
|
何度でも立ち上がれ!
|
||||||
|
""",
|
||||||
|
|
||||||
|
"""
|
||||||
最後まで あきらめないさ
|
最後まで あきらめないさ
|
||||||
やり続けることに 必ず意味がある
|
やり続けることに 必ず意味がある
|
||||||
You just try again
|
You just try again
|
||||||
|
|
@ -39,79 +46,97 @@ public class DepartureSong {
|
||||||
君は目覚めていく
|
君は目覚めていく
|
||||||
天使の微笑みで 連れ出して!
|
天使の微笑みで 連れ出して!
|
||||||
(you can smile!)
|
(you can smile!)
|
||||||
終わらない冒険に出掛けよう…
|
終わらない冒険に出掛けよう
|
||||||
""";
|
いつまでも どこまでも
|
||||||
|
""",
|
||||||
|
|
||||||
public static final String LYRICS_LATIN =
|
"""
|
||||||
"""
|
流れ落ちる涙 勇気に変えていく
|
||||||
|
天使の羽広げ 舞い上がれ!
|
||||||
|
(you can fly!)
|
||||||
|
悲しみも痛みも包みこんで
|
||||||
|
強くなれ明日
|
||||||
|
大地を踏みしめて
|
||||||
|
君は目覚めていく
|
||||||
|
天使の微笑みで 連れ出して!
|
||||||
|
(you can smile!)
|
||||||
|
"始まり"はいつでも遅くないさ
|
||||||
|
何度でも! (you can try!)
|
||||||
|
何度でも! (you can try!)
|
||||||
|
何度でも立ち上がれ!
|
||||||
|
"""};
|
||||||
|
|
||||||
|
public static final String[] LYRICS_LATIN =
|
||||||
|
{"""
|
||||||
Daichi wo fumishimete
|
Daichi wo fumishimete
|
||||||
Kimi wa mezameteiku
|
Kimi wa mezameteiku
|
||||||
Tenshi no hohoemi de
|
Tenshi no hohoemi de
|
||||||
Tsuredashite!
|
Tsuredashite!""",
|
||||||
|
|
||||||
|
"""
|
||||||
Kodoku demo
|
Kodoku demo
|
||||||
Hitori janai sa
|
Hitori janai sa
|
||||||
Umaretekita koto ni
|
Umaretekita koto ni
|
||||||
Kanarazu ima ga aru
|
Kanarazu ima ga aru""",
|
||||||
|
"""
|
||||||
Yasashisa ni michiafureteru
|
Yasashisa ni michiafureteru
|
||||||
Aoi hoshi ni arigatou
|
Aoi hoshi ni arigatou""",
|
||||||
|
"""
|
||||||
You can smile again
|
You can smile again
|
||||||
Taiyou abite
|
Taiyou abite
|
||||||
You can fly away
|
You can fly away
|
||||||
Sekai wa kimi no kagayaki
|
Sekai wa kimi no kagayaki
|
||||||
Wo matteru
|
Wo matteru""",
|
||||||
|
"""
|
||||||
Daichi wo fumishimete
|
Daichi wo fumishimete
|
||||||
Kimi wa mezameteiku
|
Kimi wa mezameteiku
|
||||||
Tenshi no hohoemi de
|
Tenshi no hohoemi de
|
||||||
Tsuredashite! (You can smile!)
|
Tsuredashite! (You can smile!)
|
||||||
"Hajimari" wa itsudemo
|
"Hajimari" wa itsudemo
|
||||||
Osokunai sa
|
Osokunai sa
|
||||||
Nandodemo tachiagare!
|
Nandodemo tachiagare!""",
|
||||||
|
"""
|
||||||
Saigo made akiramenai sa
|
Saigo made akiramenai sa
|
||||||
Yaritsuzukeru koto ni
|
Yaritsuzukeru koto ni
|
||||||
Kanarazu imi ga aru
|
Kanarazu imi ga aru""",
|
||||||
|
"""
|
||||||
You just try again
|
You just try again
|
||||||
Yami wo nukete
|
Yami wo nukete
|
||||||
You just go away
|
You just go away
|
||||||
Mirai wa itsumo bokutachi wo
|
Mirai wa itsumo bokutachi wo
|
||||||
Matteru
|
Matteru""",
|
||||||
|
"""
|
||||||
Oozora nukenukete kaihara
|
Oozora nukenukete kaihara
|
||||||
Koeteyuke
|
Koeteyuke
|
||||||
Tenshi no nage kissu
|
Tenshi no nage kissu
|
||||||
Tsukamaete! (You can try!)
|
Tsukamaete! (You can try!)
|
||||||
Mada daremo mita koto nai
|
Mada daremo mita koto nai
|
||||||
Sekai he
|
Sekai he
|
||||||
Tobidasou ashita
|
Tobidasou ashita""",
|
||||||
|
"""
|
||||||
Daichi wo fumishimete
|
Daichi wo fumishimete
|
||||||
Kimi wa mezameteiku
|
Kimi wa mezameteiku
|
||||||
Tenshi no hohoemi de
|
Tenshi no hohoemi de
|
||||||
Tsuredashite! (YOU CAN SMILE!)
|
Tsuredashite! (YOU CAN SMILE!)
|
||||||
Owaranai bouken ni dekakeyou
|
Owaranai bouken ni dekakeyou
|
||||||
Itsumademo dokomademo
|
Itsumademo dokomademo""",
|
||||||
|
"""
|
||||||
Nagareochiru namida yuuki ni
|
Nagareochiru namida yuuki ni
|
||||||
Kaeteiku
|
Kaeteiku
|
||||||
Tenshi no hani hiroge maiagare! (YOU CAN FLY!)
|
Tenshi no hani hiroge maiagare! (YOU CAN FLY!)
|
||||||
Kanashimi mo itami mo
|
Kanashimi mo itami mo
|
||||||
Tsutsumikonde
|
Tsutsumikonde
|
||||||
Tsuyoku nare ashita
|
Tsuyoku nare ashita""",
|
||||||
|
"""
|
||||||
Daichi wo fumishimete
|
Daichi wo fumishimete
|
||||||
Kimi wa mezameteiku
|
Kimi wa mezameteiku
|
||||||
Tenshi no hohoemi de
|
Tenshi no hohoemi de
|
||||||
Tsuredashite! (You can smile!)
|
Tsuredashite! (You can smile!)""",
|
||||||
|
"""
|
||||||
"Hajimari" wa itsudemo
|
"Hajimari" wa itsudemo
|
||||||
Osokunai sa
|
Osokunai sa
|
||||||
Nandodemo! (you can try!)
|
Nandodemo! (you can try!)
|
||||||
Nandodemo! (you can try!)
|
Nandodemo! (you can try!)
|
||||||
Nandodemo tachiagare!
|
Nandodemo tachiagare!
|
||||||
""";
|
"""};
|
||||||
}
|
}
|
||||||
|
|
@ -1,7 +1,66 @@
|
||||||
package com.github.nilstrieb.util;
|
package com.github.nilstrieb.util;
|
||||||
|
|
||||||
public class MultiPageEmbed {
|
import com.github.nilstrieb.reactions.ReactionEventManager;
|
||||||
public static final String NEXT_PAGE_DEFAULT_REACTION = "";
|
import com.github.nilstrieb.reactions.ReactionListener;
|
||||||
public static final String PREVIOUS_PAGE_DEFAULT_REACTION = "";
|
import net.dv8tion.jda.api.EmbedBuilder;
|
||||||
//TODO implement
|
import net.dv8tion.jda.api.entities.Message;
|
||||||
|
import net.dv8tion.jda.api.entities.MessageEmbed;
|
||||||
|
import net.dv8tion.jda.api.events.message.react.MessageReactionAddEvent;
|
||||||
|
import net.dv8tion.jda.api.events.message.react.MessageReactionRemoveEvent;
|
||||||
|
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
|
public class MultiPageEmbed implements ReactionListener {
|
||||||
|
private static final String NEXT_PAGE_DEFAULT_REACTION = "\u27a1";
|
||||||
|
private static final String PREVIOUS_PAGE_DEFAULT_REACTION = "\u2b05";
|
||||||
|
|
||||||
|
private final Message message;
|
||||||
|
private final MessageEmbed[] pages;
|
||||||
|
private int currentState;
|
||||||
|
private final String prevReaction;
|
||||||
|
private final String nextReaction;
|
||||||
|
|
||||||
|
public MultiPageEmbed(Message message, EmbedBuilder... pages) {
|
||||||
|
this(message, PREVIOUS_PAGE_DEFAULT_REACTION, NEXT_PAGE_DEFAULT_REACTION, pages);
|
||||||
|
}
|
||||||
|
|
||||||
|
public MultiPageEmbed(Message message, String prevReaction, String nextReaction, EmbedBuilder... builders) {
|
||||||
|
this.message = message;
|
||||||
|
this.prevReaction = prevReaction;
|
||||||
|
this.nextReaction = nextReaction;
|
||||||
|
|
||||||
|
pages = new MessageEmbed[builders.length];
|
||||||
|
for (int i = 0; i < pages.length; i++) {
|
||||||
|
pages[i] = builders[i].build();
|
||||||
|
}
|
||||||
|
currentState = 0;
|
||||||
|
|
||||||
|
message.addReaction(prevReaction).queue();
|
||||||
|
message.addReaction(nextReaction).queue();
|
||||||
|
|
||||||
|
ReactionEventManager.addMessage(message.getIdLong(), this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onReactionAdded(MessageReactionAddEvent event) {
|
||||||
|
String name = event.getReaction().getReactionEmote().getName();
|
||||||
|
if (name.equals(nextReaction)) {
|
||||||
|
if(currentState + 1 < pages.length){
|
||||||
|
currentState++;
|
||||||
|
message.editMessage(pages[currentState]).queue();
|
||||||
|
}
|
||||||
|
} else if (name.equals(prevReaction)) {
|
||||||
|
if(currentState > 0){
|
||||||
|
currentState--;
|
||||||
|
message.editMessage(pages[currentState]).queue();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Objects.requireNonNull(event.getUser(), "[MultiPageEmbed] reaction user was null");
|
||||||
|
event.getReaction().removeReaction(event.getUser()).queue();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onReactionRemoved(MessageReactionRemoveEvent event) {
|
||||||
|
//leave empty
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue