Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import net.dv8tion.jda.api.JDA;
import net.dv8tion.jda.api.entities.Guild;
import net.dv8tion.jda.api.entities.User;
import net.dv8tion.jda.api.requests.RestAction;
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
import net.dv8tion.jda.api.interactions.InteractionContextType;
import net.dv8tion.jda.api.interactions.commands.OptionMapping;
Expand Down Expand Up @@ -92,26 +93,33 @@ private void show(SlashCommandInteractionEvent event) {
return;
}

StringBuilder sb = new StringBuilder();
event.deferReply(true).queue();

JDA jda = event.getJDA();

for (Long deny : denyUsers) {
User user = jda.retrieveUserById(deny).complete();
if (user != null) {
sb.append(DiscordUtils.getEscapedName(guild, user)).append("\n");
List<RestAction<User>> fetches = denyUsers.stream()
.<RestAction<User>>map(jda::retrieveUserById)
.toList();

RestAction.allOf(fetches).queue(users -> {
StringBuilder sb = new StringBuilder();

for (User user : users) {
if (user != null) {
sb.append(DiscordUtils.getEscapedName(guild, user)).append("\n");
}
}
}

if (sb.isEmpty()) {
event.reply("読み上げ拒否されたユーザの情報を取得できませんでした。").setEphemeral(true).queue();
return;
}
if (sb.isEmpty()) {
event.getHook().sendMessage("読み上げ拒否されたユーザの情報を取得できませんでした。").setEphemeral(true).queue();
return;
}

MessageCreateBuilder msg = new MessageCreateBuilder()
.addContent("読み上げ拒否されたユーザ一覧\n")
.addContent("```\n" + sb + "```");
event.reply(msg.build()).setEphemeral(true).queue();
MessageCreateBuilder msg = new MessageCreateBuilder()
.addContent("読み上げ拒否されたユーザ一覧\n")
.addContent("```\n" + sb + "```");
event.getHook().sendMessage(msg.build()).setEphemeral(true).queue();
});
}

private void add(SlashCommandInteractionEvent event) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -217,8 +217,20 @@ private void upload(SlashCommandInteractionEvent event) {

replayEmbedBuilder.setTitle("登録された単語と読み");

for (LegacyDictData dictData : ret) {
addDictWordAndReadingField(replayEmbedBuilder, dictData.getTarget(), dictData.getRead());
ret.stream()
.limit(MessageEmbed.MAX_FIELD_AMOUNT)
.forEach(dictData -> addDictWordAndReadingField(replayEmbedBuilder, dictData.getTarget(), dictData.getRead()));

if (ret.size() >= 2) {
StringBuilder footerSb = new StringBuilder();
footerSb.append(String.format("計%d個", ret.size()));

int omit = ret.size() - MessageEmbed.MAX_FIELD_AMOUNT;
if (omit > 0) {
footerSb.append(String.format(" (%d個省略)", omit));
}

replayEmbedBuilder.setFooter(footerSb.toString());
}

event.getHook().sendMessageEmbeds(replayEmbedBuilder.build()).addContent(overwrite ? "以下の単語の読みを上書き登録しました" : "以下の単語の読みを登録しました").queue();
Expand Down Expand Up @@ -250,10 +262,13 @@ private void download(SlashCommandInteractionEvent event) {
getDictionaryManager().serverDictSaveToJson(jo, guildId);
return GSON.toJson(jo).getBytes(StandardCharsets.UTF_8);

}, getHeavyExecutor()).thenAcceptAsync(data -> {

event.getHook().sendFiles(FileUpload.fromData(data, guildId + "_dict.json")).setEphemeral(true).queue();

}, getHeavyExecutor()).whenCompleteAsync((data, error) -> {
if (error == null) {
event.getHook().sendFiles(FileUpload.fromData(data, guildId + "_dict.json")).setEphemeral(true).queue();
} else {
getITTSLogger().error("Dictionary download failure", error);
event.getHook().sendMessage("辞書ファイルのダウンロード中にエラーが発生しました").setEphemeral(true).queue();
}
}, getAsyncExecutor());
}

Expand Down Expand Up @@ -323,13 +338,13 @@ private void addDictWordAndReadingField(EmbedBuilder builder, String word, Strin
String w;
String r;

if (word.length() < MAX_FIELD_TEXT_LENGTH) {
if (word.length() <= MAX_FIELD_TEXT_LENGTH) {
w = "` " + word.replace("\n", "\\n") + " `";
} else {
w = "` " + word.substring(0, MAX_FIELD_TEXT_LENGTH).replace("\n", "\\n") + "... `";
}

if (reading.length() < MAX_FIELD_TEXT_LENGTH) {
if (reading.length() <= MAX_FIELD_TEXT_LENGTH) {
r = "```" + reading.replace("```", "\\```") + "```";
} else {
r = "```" + reading.substring(0, MAX_FIELD_TEXT_LENGTH).replace("```", "\\```") + "... ```";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ public void commandInteraction(SlashCommandInteractionEvent event) {
if (reconnectChannelPair != null) {
AudioChannel audioChannel = event.getJDA().getVoiceChannelById(reconnectChannelPair.speakAudioChannel());
if (audioChannel != null) {
event.reply(audioChannel.getAsMention() + "から切断します。").queue();
event.reply(audioChannel.getAsMention() + "への再接続予約を取り消しました。").queue();
botStateData.setReconnectChannelPair(null);
reconnectFlg = true;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ public void commandInteraction(SlashCommandInteractionEvent event) {
}

getTTSManager().setReadAroundChannel(event.getGuild(), event.getChannel());
audioManager.openAudioConnection(connectedChannel.asVoiceChannel());
audioManager.openAudioConnection(connectedChannel);
}, getAsyncExecutor());
} else {
event.reply("現在VCに接続していません。").setEphemeral(true).queue();
Expand Down
Loading