Skip to content
This repository has been archived by the owner on Sep 25, 2024. It is now read-only.

Commit

Permalink
feat(oatmeal): Implements an auto-thread creation feature that is tog… (
Browse files Browse the repository at this point in the history
  • Loading branch information
Trip-kun authored Jan 14, 2024
2 parents b0937d0 + e3bc982 commit eff5958
Show file tree
Hide file tree
Showing 6 changed files with 88 additions and 5 deletions.
15 changes: 13 additions & 2 deletions src/main/java/wtf/triplapeeck/oatmeal/commands/Command.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import net.dv8tion.jda.api.Permission;
import net.dv8tion.jda.api.entities.User;
import net.dv8tion.jda.api.entities.channel.ChannelType;
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
Expand Down Expand Up @@ -263,8 +264,18 @@ public boolean ensureTableIsEmpty(@NotNull DataCarriage carriage) {


}


public boolean isThreadable(@NotNull DataCarriage carriage) {
ChannelType type = carriage.channel.getType();
return type == ChannelType.TEXT;
}
public boolean ensureThreadable(@NotNull DataCarriage carriage) {
if (isThreadable(carriage)) {
return true;
} else {
carriage.channel.sendMessage("You cannot use this command unless threads are available, such as within normal guild channels!").queue();
return false;
}
}
public boolean isFirstArgument(@NotNull DataCarriage carriage) {
try {
return (carriage.args[1] != "" && carriage.args[1] != null);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,18 @@ public void addCommand(@NotNull Command command) {
public void handle(@NotNull MessageReceivedEvent event, @NotNull JDA api, ThreadManager listener) {
DataCarriage carriage;
carriage = new DataCarriage();
if ( event.getAuthor().getIdLong()==564635010917859332L) return;
if ( event.getAuthor().getIdLong()==api.getSelfUser().getIdLong()) return;
Logger.customLog("Listener", "Prepare");
Prepare(event, api, carriage);
if (carriage.channelStorable.getAutoThread()) {
String name;
if (carriage.message.getContentRaw().length()>50) {
name=carriage.message.getContentRaw().substring(1, 50);
} else {
name=carriage.message.getContentRaw();
}
carriage.message.createThreadChannel(name).queue();
}
Logger.customLog("Listener", "HandleMessage");
HandleMessage(event, carriage);
Logger.customLog("Listener", "Main");
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
package wtf.triplapeeck.oatmeal.commands.essential;

import net.dv8tion.jda.api.entities.User;
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
import org.jetbrains.annotations.NotNull;
import wtf.triplapeeck.oatmeal.DataCarriage;
import wtf.triplapeeck.oatmeal.commands.Command;
import wtf.triplapeeck.oatmeal.listeners.ThreadManager;

public class SetAutoThread extends Command {
@Override
public void handler(MessageReceivedEvent event, DataCarriage carriage, ThreadManager listener) {
if (ensureAdministrator(carriage) && ensureFirstArgument(carriage) && ensureThreadable(carriage)) {
String preference = carriage.args[1];
if (preference.equalsIgnoreCase("enable") || preference.equalsIgnoreCase("disable")) {
carriage.channelStorable.setAutoThread(preference.equalsIgnoreCase("enable"));
carriage.channel.sendMessage("Messages in this channel now have auto-threading " + preference.toLowerCase() + "d.").queue();
} else {
carriage.channel.sendMessage("You have to choose either enable or disable auto-threading.").queue();
}
}
}
@NotNull
@Override
public CommandCategory getCategory() { return CommandCategory.ESSENTIAL;}

@NotNull
@Override
public String getDocumentation() {
return "Used to enable or disable auto-threading for your server" +
"\nAuto threading causes a thread to be made for any message sent within this channel" +
"\nUsage s!autothread [enable/disable]" +
"\nUpdates the channel setting for currency" +
"\nExample: s!autothread enable";
}

@Override
public @NotNull String getName() { return "autothread"; }

@Override
public @NotNull boolean hasPermission(DataCarriage carriage, User user) {
return isAdministrator(carriage) && isThreadable(carriage);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -49,5 +49,7 @@ public synchronized Integer tableCount() {
public abstract void setTable(Table tbl) throws ValidTableException;
public abstract void removeTable() throws UsedTableException;
public abstract void releaseTable();
public abstract void setAutoThread(boolean enabled);
public abstract boolean getAutoThread();
public abstract void load();
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,8 @@
public class MariaChannel extends ChannelData {
@DatabaseField(id=true)
public @NotNull String id;

@DatabaseField(canBeNull=false)
public boolean autoThread=false;
@DatabaseField(canBeNull = true)
public @Nullable String tableJson;

Expand Down Expand Up @@ -77,4 +78,12 @@ public synchronized void load() {
public String getID() {
return null;
}
@Override
public synchronized boolean getAutoThread() {
return autoThread;
}
@Override
public synchronized void setAutoThread(boolean enabled) {
this.autoThread=enabled;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ public ORMLiteDatabaseUtil() throws SQLException {
upgrade();
}

private static final int VERSION=3;
private static final int VERSION=4;

public static int getVersion() {
return VERSION;
Expand Down Expand Up @@ -89,6 +89,14 @@ public static void upgrade() {
}
case 3:
Logger.basicLog(Logger.Level.INFO, "Database now ORM Version 3");
try {
userDao.executeRaw("ALTER TABLE oatmeal_channels ADD COLUMN autoThread TINYINT(1);");
userDao.executeRaw("ALTER TABLE oatmeal_channels MODIFY COLUMN autoThread TINYINT(1) NOT NULL;");
} catch (SQLException e) {
throw new RuntimeException(e);
}
case 4:
Logger.basicLog(Logger.Level.INFO, "Database now ORM Version 4");
}
config.version=VERSION;
Config.saveConfig();
Expand Down

0 comments on commit eff5958

Please sign in to comment.