Initial commit

This commit is contained in:
Paldiu
2021-02-26 22:33:47 -06:00
commit 2aec375e2a
40 changed files with 1122 additions and 0 deletions

View File

@ -0,0 +1,11 @@
package io.github.paldiu.obsidian;
import io.github.paldiu.obsidian.utils.Constants;
public final class Obsidian {
// This class only initializes the bot.
// Using utility classes to manage instances.
public static void main(String[] args) {
Constants.getRegistry().verify();
}
}

View File

@ -0,0 +1,6 @@
package io.github.paldiu.obsidian.commands;
@FunctionalInterface
public interface Command {
void execute();
}

View File

@ -0,0 +1,21 @@
package io.github.paldiu.obsidian.commands;
import discord4j.core.object.entity.Message;
import discord4j.core.object.entity.User;
import io.github.paldiu.obsidian.utils.Constants;
public class Commands {
private Command info(User user, Message message) {
return () -> {
};
}
private Command coloredRank(User user, Message message) {
return () -> {
message.getGuild().
};
}
}

View File

@ -0,0 +1,95 @@
package io.github.paldiu.obsidian.props;
import io.github.paldiu.obsidian.Obsidian;
import io.github.paldiu.obsidian.utils.Constants;
import java.io.*;
import java.net.URISyntaxException;
import java.util.Properties;
public class PropertiesManager {
private static final PropertiesManager instance = new PropertiesManager();
private final Properties properties;
private final File child;
private PropertiesManager() {
properties = new Properties();
File parent = new File(ClassLoader.getSystemClassLoader().getResource(".").getPath());
child = new File(parent, "options.properties");
}
public static PropertiesManager getInstance() {
return instance;
}
public PropertiesManager setDefaultProperties() {
properties.setProperty("name", "Obsidian");
properties.setProperty("author", "Predicate<? super T>#0001");
properties.setProperty("version", "1.0.0");
properties.setProperty("encoding", "UTF_8");
properties.setProperty("token", "ODEyMTIxMjQ5NjE0MDA0Mjc0.YC8I2g.VuVXVztfwStfflEtIyx4URBBdyQ");
return this;
}
public Properties getProperties() {
verify();
return properties;
}
public void build() {
if (child.exists()) {
Constants.getLogger().info("File already exists!");
return;
}
verify();
try (OutputStream stream = new FileOutputStream(child)) {
properties.store(stream, null);
} catch (IOException e) {
Constants.getLogger().error(e.getMessage());
}
}
public void load() {
if (!child.exists()) {
setDefaultProperties().build();
}
try (InputStream input = new FileInputStream(child)) {
properties.load(input);
} catch (IOException ignored) {
}
}
public String getName() {
return property("name");
}
public String getAuthor() {
return property("author");
}
public String getVersion() {
return property("version");
}
public String getEncoding() {
return property("encoding");
}
public String getToken() {
return property("token");
}
private void verify() {
if (properties.isEmpty()) {
setDefaultProperties();
}
}
private String property(String name) {
verify();
return properties.getProperty(name);
}
}

View File

@ -0,0 +1,17 @@
package io.github.paldiu.obsidian.utils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public final class Constants {
private static final Logger logger = LoggerFactory.getLogger("obsidian");
private static final Registry registry = new Registry();
public static Logger getLogger() {
return logger;
}
public static Registry getRegistry() {
return registry;
}
}

View File

@ -0,0 +1,54 @@
package io.github.paldiu.obsidian.utils;
import discord4j.common.util.Snowflake;
import discord4j.core.DiscordClient;
import discord4j.core.DiscordClientBuilder;
import discord4j.core.GatewayDiscordClient;
import discord4j.core.event.domain.lifecycle.ReadyEvent;
import discord4j.core.object.entity.User;
import discord4j.discordjson.json.ApplicationInfoData;
import discord4j.discordjson.json.UserData;
import discord4j.rest.response.ResponseFunction;
import io.github.paldiu.obsidian.props.PropertiesManager;
public final class Registry {
private final GatewayDiscordClient gateway;
private final DiscordClient client;
private final String token;
public Registry() {
PropertiesManager.getInstance().load();
token = PropertiesManager.getInstance().getToken();
client = DiscordClient.builder(token)
.onClientResponse(ResponseFunction.emptyIfNotFound())
.build();
client.getApplicationInfo()
.map(ApplicationInfoData::owner)
.map(UserData::id)
.map(Snowflake::asLong)
.doOnNext(ownerId -> {
Constants.getLogger().info(ownerId.toString());
})
.block();
gateway = client.login().block();
}
public void verify() {
getGateway().getEventDispatcher().on(ReadyEvent.class).subscribe(event -> {
final User self = event.getSelf();
Constants.getLogger().info(String.format("Logged in as %s#%s", self.getUsername(), self.getDiscriminator()));
});
}
public GatewayDiscordClient getGateway() {
return gateway;
}
public DiscordClient getClient() {
return client;
}
public String getToken() {
return token;
}
}