mirror of
https://github.com/SimplexDevelopment/Obsidian.git
synced 2025-07-05 00:26:42 +00:00
Initial commit
This commit is contained in:
11
src/main/java/io/github/paldiu/obsidian/Obsidian.java
Normal file
11
src/main/java/io/github/paldiu/obsidian/Obsidian.java
Normal 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();
|
||||
}
|
||||
}
|
@ -0,0 +1,6 @@
|
||||
package io.github.paldiu.obsidian.commands;
|
||||
|
||||
@FunctionalInterface
|
||||
public interface Command {
|
||||
void execute();
|
||||
}
|
@ -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().
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
17
src/main/java/io/github/paldiu/obsidian/utils/Constants.java
Normal file
17
src/main/java/io/github/paldiu/obsidian/utils/Constants.java
Normal 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;
|
||||
}
|
||||
}
|
54
src/main/java/io/github/paldiu/obsidian/utils/Registry.java
Normal file
54
src/main/java/io/github/paldiu/obsidian/utils/Registry.java
Normal 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;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user