77 lines
2.7 KiB
Java
77 lines
2.7 KiB
Java
package me.totalfreedom.discord.listener;
|
|
|
|
import discord4j.core.event.domain.message.ReactionAddEvent;
|
|
import discord4j.core.object.Embed;
|
|
import discord4j.core.object.entity.Member;
|
|
import discord4j.core.object.entity.Message;
|
|
import discord4j.core.object.entity.channel.TextChannel;
|
|
import discord4j.discordjson.json.MessageCreateRequest;
|
|
import me.totalfreedom.discord.TFD4J;
|
|
import me.totalfreedom.discord.util.SnowflakeEntry;
|
|
import me.totalfreedom.totalfreedommod.util.FLog;
|
|
|
|
public class ReactionListener
|
|
{
|
|
private final TFD4J tfd4j;
|
|
|
|
public ReactionListener(TFD4J tfd4J)
|
|
{
|
|
this.tfd4j = tfd4J;
|
|
}
|
|
|
|
public void onReactionAdd()
|
|
{
|
|
tfd4j.getBot()
|
|
.getClient()
|
|
.getEventDispatcher()
|
|
.on(ReactionAddEvent.class)
|
|
.filter(r -> r.getGuild().block() != null)
|
|
.filter(r -> r.getMember().orElse(null) != null)
|
|
.filter(r -> !r.getMember()
|
|
.orElseThrow()
|
|
.getId()
|
|
.equals(tfd4j.getBot().getClient().getSelfId()))
|
|
.filter(r -> !r.getChannelId()
|
|
.equals(SnowflakeEntry.REPORT_CHANNEL_ID.getSnowflake()))
|
|
.filter(r -> r.getEmoji()
|
|
.asUnicodeEmoji()
|
|
.orElseThrow(UnsupportedOperationException::new)
|
|
.getRaw()
|
|
.equals("\uD83D\uDCCB"))
|
|
.doOnError(FLog::severe)
|
|
.subscribe(this::reactionWork);
|
|
}
|
|
|
|
private void reactionWork(ReactionAddEvent event)
|
|
{
|
|
final TextChannel archiveChannel = tfd4j.getBot()
|
|
.getClient()
|
|
.getChannelById(SnowflakeEntry.ARCHIVE_REPORT_CHANNEL_ID.getSnowflake())
|
|
.ofType(TextChannel.class)
|
|
.blockOptional()
|
|
.orElseThrow();
|
|
|
|
final Message message = event.getMessage().blockOptional().orElseThrow();
|
|
final Member completer = event.getMember().orElseThrow();
|
|
|
|
if (!message.getAuthor().orElseThrow().getId().equals(tfd4j.getBot().getClient().getSelfId()))
|
|
{
|
|
return;
|
|
}
|
|
|
|
// We don't need other embeds... yet?
|
|
final Embed embed = message.getEmbeds().get(0);
|
|
|
|
final MessageCreateRequest request = MessageCreateRequest.builder()
|
|
.content("Report completed by " + completer.getUsername()
|
|
+ " (" + completer.getDiscriminator()
|
|
+ ")")
|
|
.addEmbed(embed.getData())
|
|
.build();
|
|
|
|
archiveChannel.getRestChannel().createMessage(request);
|
|
|
|
message.delete().block();
|
|
}
|
|
}
|