Skip to content

Commit

Permalink
feat: フォーラム対応 (#16)
Browse files Browse the repository at this point in the history
  • Loading branch information
book000 authored Oct 9, 2022
1 parent 0ce7c97 commit b3be3db
Show file tree
Hide file tree
Showing 8 changed files with 29 additions and 44 deletions.
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@
<dependency>
<groupId>net.dv8tion</groupId>
<artifactId>JDA</artifactId>
<version>5.0.0-alpha.20</version>
<version>5.0.0-alpha.21</version>
<exclusions>
<exclusion>
<groupId>club.minnced</groupId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,15 @@
import com.jaoafa.bugreporter.lib.BugManager;
import net.dv8tion.jda.api.entities.Message;
import net.dv8tion.jda.api.entities.User;
import net.dv8tion.jda.api.entities.channel.concrete.ThreadChannel;
import net.dv8tion.jda.api.entities.channel.forums.ForumPost;
import net.dv8tion.jda.api.events.interaction.ModalInteractionEvent;
import net.dv8tion.jda.api.hooks.ListenerAdapter;

import javax.annotation.Nonnull;
import java.util.Objects;

public class BugMenuSubmitEvent extends ListenerAdapter {
@Override
public void onModalInteraction(@Nonnull ModalInteractionEvent event) {
public void onModalInteraction(ModalInteractionEvent event) {
if (event.getGuild() == null || event.getGuild().getIdLong() != Main.getConfig().getGuildId()) {
event.reply("このサーバでは利用できません。").setEphemeral(true).queue();
return;
Expand All @@ -35,10 +34,10 @@ public void onModalInteraction(@Nonnull ModalInteractionEvent event) {

BugManager bugManager = Main.getBugManager();
try {
ThreadChannel thread = bugManager.createReport(targetMessage, reporter, title, description);
ForumPost forum = bugManager.createReport(targetMessage, reporter, title, description);
event
.getHook()
.editOriginal("報告に成功しました!以降の対応は %s にて行われますのでご確認ください。".formatted(thread.getAsMention()))
.getHook()
.editOriginal("報告に成功しました!以降の対応は %s にて行われますのでご確認ください。".formatted(forum.getThreadChannel().getAsMention()))
.queue();
} catch (BugManager.BugReportException e) {
event
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,14 @@
import net.dv8tion.jda.api.entities.channel.concrete.ThreadChannel;
import net.dv8tion.jda.api.events.interaction.ModalInteractionEvent;
import net.dv8tion.jda.api.hooks.ListenerAdapter;
import org.jetbrains.annotations.NotNull;

import javax.annotation.Nonnull;
import java.util.Objects;
import java.util.regex.Matcher;

public class ChangeTitleSubmitEvent extends ListenerAdapter {
@Override
public void onModalInteraction(@Nonnull ModalInteractionEvent event) {
public void onModalInteraction(@NotNull ModalInteractionEvent event) {
if (event.getGuild() == null || event.getGuild().getIdLong() != Main.getConfig().getGuildId()) {
event.reply("このサーバでは利用できません。").setEphemeral(true).queue();
return;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,13 @@
import net.dv8tion.jda.api.events.interaction.ModalInteractionEvent;
import net.dv8tion.jda.api.hooks.ListenerAdapter;

import javax.annotation.Nonnull;
import java.awt.*;
import java.util.Objects;
import java.util.regex.Matcher;

public class CloseReportEvent extends ListenerAdapter {
@Override
public void onModalInteraction(@Nonnull ModalInteractionEvent event) {
public void onModalInteraction(ModalInteractionEvent event) {
if (event.getGuild() == null || event.getGuild().getIdLong() != Main.getConfig().getGuildId()) {
event.reply("このサーバでは利用できません。").setEphemeral(true).queue();
return;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,12 @@

import com.jaoafa.bugreporter.Main;
import net.dv8tion.jda.api.JDA;
import net.dv8tion.jda.api.events.ReadyEvent;
import net.dv8tion.jda.api.events.session.ReadyEvent;
import net.dv8tion.jda.api.hooks.ListenerAdapter;
import org.jetbrains.annotations.NotNull;

public class DiscordReadyEvent extends ListenerAdapter {
@Override
public void onReady(@NotNull ReadyEvent event) {
public void onReady(ReadyEvent event) {
JDA jda = event.getJDA();
Main.getLogger().info("Ready: " + jda.getSelfUser().getAsTag());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,13 @@
import net.dv8tion.jda.api.events.interaction.ModalInteractionEvent;
import net.dv8tion.jda.api.hooks.ListenerAdapter;

import javax.annotation.Nonnull;
import java.awt.*;
import java.util.Objects;
import java.util.regex.Matcher;

public class SendToIssueEvent extends ListenerAdapter {
@Override
public void onModalInteraction(@Nonnull ModalInteractionEvent event) {
public void onModalInteraction(ModalInteractionEvent event) {
if (event.getGuild() == null || event.getGuild().getIdLong() != Main.getConfig().getGuildId()) {
event.reply("このサーバでは利用できません。").setEphemeral(true).queue();
return;
Expand Down
41 changes: 15 additions & 26 deletions src/main/java/com/jaoafa/bugreporter/lib/BugManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,9 @@
import net.dv8tion.jda.api.JDA;
import net.dv8tion.jda.api.entities.Message;
import net.dv8tion.jda.api.entities.User;
import net.dv8tion.jda.api.entities.channel.concrete.TextChannel;
import net.dv8tion.jda.api.entities.channel.concrete.ForumChannel;
import net.dv8tion.jda.api.entities.channel.concrete.ThreadChannel;
import net.dv8tion.jda.api.entities.channel.forums.ForumPost;
import net.dv8tion.jda.api.entities.emoji.Emoji;
import net.dv8tion.jda.api.interactions.components.ActionRow;
import net.dv8tion.jda.api.interactions.components.Modal;
Expand All @@ -15,11 +16,11 @@
import net.dv8tion.jda.api.interactions.components.text.TextInputStyle;
import net.dv8tion.jda.api.utils.messages.MessageCreateBuilder;
import net.dv8tion.jda.api.utils.messages.MessageCreateData;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.json.JSONArray;
import org.json.JSONObject;

import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import java.awt.*;
import java.io.IOException;
import java.nio.file.Files;
Expand Down Expand Up @@ -86,10 +87,10 @@ public BugReport getReport(Message message) {
return reports.stream().filter(r -> r.messageId == message.getIdLong()).findAny().orElse(null);
}

public ThreadChannel createReport(Message message,
User reporter,
String title,
@Nullable String description) throws BugReportException {
public ForumPost createReport(Message message,
User reporter,
String title,
@Nullable String description) throws BugReportException {
if (title == null) {
title = "%s による #%s での不具合報告".formatted(reporter.getAsTag(), message.getChannel().getName());
}
Expand All @@ -102,21 +103,20 @@ public ThreadChannel createReport(Message message,
// スレッドを作成
JDA jda = Main.getJDA();
Config config = Main.getConfig();
TextChannel channel = jda.getTextChannelById(config.getChannelId());
ForumChannel channel = jda.getForumChannelById(config.getChannelId());
if (channel == null) {
throw new BugReportException("スレッド用のチャンネルを見つけられませんでした。");
throw new BugReportException("フォーラムチャンネルを見つけられませんでした。");
}

String threadTitle = (createIssueResult.error() == null ?
"*" + createIssueResult.issueNumber() + " " :
"") + title;
ThreadChannel thread = createThread(threadTitle);
thread.sendMessage(generateThreadStartMessage(message, createIssueResult, reporter, description)).queue();
ForumPost forum = channel.createForumPost(threadTitle, generateThreadStartMessage(message, createIssueResult, reporter, description)).complete();
saveReport(new BugReport(message.getIdLong(),
new BugUser(reporter.getIdLong(), reporter.getName(), reporter.getDiscriminator()),
thread.getIdLong(),
forum.getThreadChannel().getIdLong(),
createIssueResult.issueNumber()));
return thread;
return forum;
}

private MessageCreateData generateThreadStartMessage(Message message,
Expand Down Expand Up @@ -199,8 +199,8 @@ private void saveReport(BugReport report) {
}
}

private String generateGitHubBody(@Nonnull Message message,
@Nonnull User reporter,
private String generateGitHubBody(@NotNull Message message,
@NotNull User reporter,
@Nullable String userDescription) {
ZonedDateTime createdAt = message.getTimeCreated().atZoneSameInstant(ZoneId.of("Asia/Tokyo"));
return """
Expand All @@ -226,17 +226,6 @@ private String generateGitHubBody(@Nonnull Message message,
.trim();
}

private ThreadChannel createThread(String threadName) {
long channelId = Main.getConfig().getChannelId();
JDA jda = Main.getJDA();

TextChannel channel = jda.getTextChannelById(channelId);
if (channel == null) {
throw new NullPointerException("Get channel failed");
}
return channel.createThreadChannel(threadName).complete();
}

public record BugReport(long messageId, BugUser reporter, long threadId, int issueNumber) {
JSONObject toJSON() {
return new JSONObject()
Expand Down
4 changes: 2 additions & 2 deletions src/main/java/com/jaoafa/bugreporter/lib/GitHub.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@

import com.jaoafa.bugreporter.Main;
import okhttp3.*;
import org.jetbrains.annotations.NotNull;
import org.json.JSONArray;
import org.json.JSONObject;

import javax.annotation.Nonnull;
import java.io.IOException;
import java.util.Locale;
import java.util.Objects;
Expand Down Expand Up @@ -48,7 +48,7 @@ public static CreateIssueResult createIssue(String repo, String title, String bo
public record CreateIssueResult(int issueNumber, String error) {
}

@Nonnull
@NotNull
public static CreateIssueCommentResult createIssueComment(String repo, int issueNum, String body) {
String githubToken = Main.getConfig().getGitHubAPIToken();
String url = String.format("https://api.github.com/repos/%s/issues/%s/comments", repo, issueNum);
Expand Down

0 comments on commit b3be3db

Please sign in to comment.