Added support for text chats in voice channels. (Closes #1)
This commit is contained in:
parent
474817c4cf
commit
89ee198897
|
@ -39,9 +39,9 @@ public final class MessageCreate implements MessageCreateListener {
|
|||
*/
|
||||
@Override
|
||||
public void onMessageCreate(final MessageCreateEvent event) {
|
||||
// Is this message being created outside of a server text channel or a server thread channel?
|
||||
// Is this message being created outside of a server text channel, a server thread channel, or a server voice channel?
|
||||
final TextChannel channel = event.getChannel();
|
||||
if (channel.asServerTextChannel().isEmpty() && channel.asServerThreadChannel().isEmpty()) {
|
||||
if (channel.asServerTextChannel().isEmpty() && channel.asServerThreadChannel().isEmpty() && channel.asServerVoiceChannel().isEmpty()) {
|
||||
// Yes. Ignore it.
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -10,6 +10,7 @@ package dev.logal.crabstero.listeners;
|
|||
|
||||
import dev.logal.crabstero.Crabstero;
|
||||
import dev.logal.crabstero.tasks.ChannelHistoryIngestionTask;
|
||||
import org.javacord.api.entity.channel.TextableRegularServerChannel;
|
||||
import org.javacord.api.event.server.role.RoleChangePermissionsEvent;
|
||||
import org.javacord.api.listener.server.role.RoleChangePermissionsListener;
|
||||
|
||||
|
@ -37,9 +38,11 @@ public final class RoleChangePermissions implements RoleChangePermissionsListene
|
|||
public void onRoleChangePermissions(final RoleChangePermissionsEvent event) {
|
||||
// Does the updated role include Crabstero as a member?
|
||||
if (event.getRole().hasUser(event.getApi().getYourself())) {
|
||||
// Queue every text channel for message history ingestion.
|
||||
event.getServer().getTextChannels().forEach((channel) -> {
|
||||
this.crabstero.getWorkerPool().submit(new ChannelHistoryIngestionTask(channel, crabstero));
|
||||
// Queue every textable channel for message history ingestion.
|
||||
event.getServer().getRegularChannels().forEach((channel) -> {
|
||||
if (channel instanceof final TextableRegularServerChannel textableChannel){
|
||||
this.crabstero.getWorkerPool().submit(new ChannelHistoryIngestionTask(textableChannel, crabstero));
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -10,6 +10,7 @@ package dev.logal.crabstero.listeners;
|
|||
|
||||
import dev.logal.crabstero.Crabstero;
|
||||
import dev.logal.crabstero.tasks.ChannelHistoryIngestionTask;
|
||||
import org.javacord.api.entity.channel.TextableRegularServerChannel;
|
||||
import org.javacord.api.event.server.ServerBecomesAvailableEvent;
|
||||
import org.javacord.api.listener.server.ServerBecomesAvailableListener;
|
||||
|
||||
|
@ -29,15 +30,17 @@ public final class ServerBecomesAvailable implements ServerBecomesAvailableListe
|
|||
}
|
||||
|
||||
/**
|
||||
* Queues all text channels for message history ingestion when a server becomes available.
|
||||
* Queues all textable channels for message history ingestion when a server becomes available.
|
||||
*
|
||||
* @param event The event.
|
||||
*/
|
||||
@Override
|
||||
public void onServerBecomesAvailable(final ServerBecomesAvailableEvent event) {
|
||||
// Queue every text channel for message history ingestion.
|
||||
event.getServer().getTextChannels().forEach((channel) -> {
|
||||
this.crabstero.getWorkerPool().submit(new ChannelHistoryIngestionTask(channel, crabstero));
|
||||
// Queue every textable channel for message history ingestion.
|
||||
event.getServer().getRegularChannels().forEach((channel) -> {
|
||||
if (channel instanceof final TextableRegularServerChannel textableChannel){
|
||||
this.crabstero.getWorkerPool().submit(new ChannelHistoryIngestionTask(textableChannel, crabstero));
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
|
@ -10,6 +10,7 @@ package dev.logal.crabstero.listeners;
|
|||
|
||||
import dev.logal.crabstero.Crabstero;
|
||||
import dev.logal.crabstero.tasks.ChannelHistoryIngestionTask;
|
||||
import org.javacord.api.entity.channel.TextableRegularServerChannel;
|
||||
import org.javacord.api.event.channel.server.ServerChannelChangeOverwrittenPermissionsEvent;
|
||||
import org.javacord.api.listener.channel.server.ServerChannelChangeOverwrittenPermissionsListener;
|
||||
|
||||
|
@ -35,9 +36,11 @@ public final class ServerChannelChangeOverwrittenPermissions implements ServerCh
|
|||
*/
|
||||
@Override
|
||||
public void onServerChannelChangeOverwrittenPermissions(final ServerChannelChangeOverwrittenPermissionsEvent event) {
|
||||
// Queue every text channel for message history ingestion.
|
||||
event.getChannel().asServerTextChannel().ifPresent((channel) -> {
|
||||
this.crabstero.getWorkerPool().submit(new ChannelHistoryIngestionTask(channel, crabstero));
|
||||
// Queue every textable channel for message history ingestion.
|
||||
event.getServer().getRegularChannels().forEach((channel) -> {
|
||||
if (channel instanceof final TextableRegularServerChannel textableChannel){
|
||||
this.crabstero.getWorkerPool().submit(new ChannelHistoryIngestionTask(textableChannel, crabstero));
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
|
@ -10,6 +10,7 @@ package dev.logal.crabstero.listeners;
|
|||
|
||||
import dev.logal.crabstero.Crabstero;
|
||||
import dev.logal.crabstero.tasks.ChannelHistoryIngestionTask;
|
||||
import org.javacord.api.entity.channel.TextableRegularServerChannel;
|
||||
import org.javacord.api.entity.message.embed.EmbedBuilder;
|
||||
import org.javacord.api.entity.server.Server;
|
||||
import org.javacord.api.event.server.ServerJoinEvent;
|
||||
|
@ -61,9 +62,11 @@ public final class ServerJoin implements ServerJoinListener {
|
|||
// Send this embed to the bot owner.
|
||||
event.getApi().getOwner().ifPresent((owner) -> owner.thenAcceptAsync((user) -> user.sendMessage(embed).exceptionally(ExceptionLogger.get())));
|
||||
|
||||
// Queue all text channels for message history ingestion.
|
||||
server.getTextChannels().forEach((channel) -> {
|
||||
this.crabstero.getWorkerPool().submit(new ChannelHistoryIngestionTask(channel, crabstero));
|
||||
// Queue every textable channel for message history ingestion.
|
||||
event.getServer().getRegularChannels().forEach((channel) -> {
|
||||
if (channel instanceof final TextableRegularServerChannel textableChannel){
|
||||
this.crabstero.getWorkerPool().submit(new ChannelHistoryIngestionTask(textableChannel, crabstero));
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
|
@ -10,6 +10,7 @@ package dev.logal.crabstero.listeners;
|
|||
|
||||
import dev.logal.crabstero.Crabstero;
|
||||
import dev.logal.crabstero.tasks.ChannelHistoryIngestionTask;
|
||||
import org.javacord.api.entity.channel.TextableRegularServerChannel;
|
||||
import org.javacord.api.event.server.role.UserRoleAddEvent;
|
||||
import org.javacord.api.listener.server.role.UserRoleAddListener;
|
||||
|
||||
|
@ -37,9 +38,11 @@ public final class UserRoleAdd implements UserRoleAddListener {
|
|||
public void onUserRoleAdd(final UserRoleAddEvent event) {
|
||||
// Is the user who was assigned the role Crabstero?
|
||||
if (event.getUser().isYourself()) {
|
||||
// Queue all text channels for message history ingestion.
|
||||
event.getServer().getTextChannels().forEach((channel) -> {
|
||||
this.crabstero.getWorkerPool().submit(new ChannelHistoryIngestionTask(channel, crabstero));
|
||||
// Queue every textable channel for message history ingestion.
|
||||
event.getServer().getRegularChannels().forEach((channel) -> {
|
||||
if (channel instanceof final TextableRegularServerChannel textableChannel){
|
||||
this.crabstero.getWorkerPool().submit(new ChannelHistoryIngestionTask(textableChannel, crabstero));
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -11,6 +11,7 @@ package dev.logal.crabstero.tasks;
|
|||
import dev.logal.crabstero.Crabstero;
|
||||
import dev.logal.crabstero.utils.MarkovChainMessages;
|
||||
import org.javacord.api.entity.channel.ServerTextChannel;
|
||||
import org.javacord.api.entity.channel.TextableRegularServerChannel;
|
||||
import org.javacord.api.entity.message.Message;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
@ -29,15 +30,15 @@ public final class ChannelHistoryIngestionTask implements Runnable {
|
|||
private static final Logger logger = LoggerFactory.getLogger(ChannelHistoryIngestionTask.class);
|
||||
|
||||
private final Crabstero crabstero;
|
||||
private final ServerTextChannel channel;
|
||||
private final TextableRegularServerChannel channel;
|
||||
|
||||
/**
|
||||
* Creates a new task for ingesting the message history of a channel.
|
||||
* Creates a new task for ingesting the message history of a textable channel.
|
||||
*
|
||||
* @param channel The channel to ingest.
|
||||
* @param crabstero The Crabstero instance running this task.
|
||||
*/
|
||||
public ChannelHistoryIngestionTask(final ServerTextChannel channel, final Crabstero crabstero) {
|
||||
public ChannelHistoryIngestionTask(final TextableRegularServerChannel channel, final Crabstero crabstero) {
|
||||
this.channel = channel;
|
||||
this.crabstero = crabstero;
|
||||
}
|
||||
|
@ -51,7 +52,7 @@ public final class ChannelHistoryIngestionTask implements Runnable {
|
|||
// Do permissions allow Crabstero to read message history in this channel?
|
||||
if (!this.channel.canYouReadMessageHistory()) {
|
||||
// No. Log the problem and stop further processing this channel.
|
||||
logger.warn("Unable to ingest text channel history due to lacking permissions. Ignoring. (Name: \"" + this.channel.getName() + "\" | ID: " + this.channel.getIdAsString() + " | Server ID: " + this.channel.getServer().getIdAsString() + ")");
|
||||
logger.warn("[" + this.channel.getIdAsString() + "] Unable to ingest textable channel history due to lacking permissions. Ignoring.");
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -65,7 +66,7 @@ public final class ChannelHistoryIngestionTask implements Runnable {
|
|||
jedis.lpush(INGESTED_CHANNELS_KEY, this.channel.getIdAsString());
|
||||
|
||||
// Log the start of the ingestion of this channel.
|
||||
logger.info("Starting ingestion of text channel history. (Name: \"" + this.channel.getName() + "\" | ID: " + this.channel.getIdAsString() + " | Server ID: " + this.channel.getServer().getIdAsString() + ")");
|
||||
logger.info("[" + this.channel.getIdAsString() + "] Starting ingestion of textable channel history.");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -89,11 +90,11 @@ public final class ChannelHistoryIngestionTask implements Runnable {
|
|||
}
|
||||
|
||||
// Log the results of the ingestion.
|
||||
logger.info("Ingestion of text channel history complete. " + i + " messages ingested. (Name: \"" + this.channel.getName() + "\" | ID: " + this.channel.getIdAsString() + " | Server ID: " + this.channel.getServer().getIdAsString() + ")");
|
||||
logger.info("[" + this.channel.getIdAsString() + "] Ingestion of textable channel history complete. " + i + " messages ingested.");
|
||||
}
|
||||
} catch (final Throwable exception) {
|
||||
// A problem occurred somewhere in this task. Log the problem.
|
||||
logger.error("An error occurred while ingesting text channel history! (Name: \"" + this.channel.getName() + "\" | ID: " + this.channel.getIdAsString() + " | Server ID: " + this.channel.getServer().getIdAsString() + ")", exception);
|
||||
logger.error("[" + this.channel.getIdAsString() + "] An error occurred while ingesting textable channel history!", exception);
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue