Merge remote-tracking branch 'origin/master' into hax-dev
This commit is contained in:
commit
5d185f0964
22 changed files with 589 additions and 53 deletions
1
.github/FUNDING.yml
vendored
Normal file
1
.github/FUNDING.yml
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
custom: https://donatebot.io/checkout/448554629282922527
|
||||
94
CODE_OF_CONDUCT.md
Normal file
94
CODE_OF_CONDUCT.md
Normal file
|
|
@ -0,0 +1,94 @@
|
|||
# Citizen Code of Conduct
|
||||
|
||||
## 1. Purpose
|
||||
|
||||
A primary goal of Hadder is to be inclusive to the largest number of contributors, with the most varied and diverse backgrounds possible. As such, we are committed to providing a friendly, safe and welcoming environment for all, regardless of gender, sexual orientation, ability, ethnicity, socioeconomic status, and religion (or lack thereof).
|
||||
|
||||
This code of conduct outlines our expectations for all those who participate in our community, as well as the consequences for unacceptable behavior.
|
||||
|
||||
We invite all those who participate in Hadder to help us create safe and positive experiences for everyone.
|
||||
|
||||
## 2. Open [Source/Culture/Tech] Citizenship
|
||||
|
||||
A supplemental goal of this Code of Conduct is to increase open [source/culture/tech] citizenship by encouraging participants to recognize and strengthen the relationships between our actions and their effects on our community.
|
||||
|
||||
Communities mirror the societies in which they exist and positive action is essential to counteract the many forms of inequality and abuses of power that exist in society.
|
||||
|
||||
If you see someone who is making an extra effort to ensure our community is welcoming, friendly, and encourages all participants to contribute to the fullest extent, we want to know.
|
||||
|
||||
## 3. Expected Behavior
|
||||
|
||||
The following behaviors are expected and requested of all community members:
|
||||
|
||||
* Participate in an authentic and active way. In doing so, you contribute to the health and longevity of this community.
|
||||
* Exercise consideration and respect in your speech and actions.
|
||||
* Attempt collaboration before conflict.
|
||||
* Refrain from demeaning, discriminatory, or harassing behavior and speech.
|
||||
* Be mindful of your surroundings and of your fellow participants. Alert community leaders if you notice a dangerous situation, someone in distress, or violations of this Code of Conduct, even if they seem inconsequential.
|
||||
* Remember that community event venues may be shared with members of the public; please be respectful to all patrons of these locations.
|
||||
|
||||
## 4. Unacceptable Behavior
|
||||
|
||||
The following behaviors are considered harassment and are unacceptable within our community:
|
||||
|
||||
* Violence, threats of violence or violent language directed against another person.
|
||||
* Sexist, racist, homophobic, transphobic, ableist or otherwise discriminatory jokes and language.
|
||||
* Posting or displaying sexually explicit or violent material.
|
||||
* Posting or threatening to post other people's personally identifying information ("doxing").
|
||||
* Personal insults, particularly those related to gender, sexual orientation, race, religion, or disability.
|
||||
* Inappropriate photography or recording.
|
||||
* Inappropriate physical contact. You should have someone's consent before touching them.
|
||||
* Unwelcome sexual attention. This includes, sexualized comments or jokes; inappropriate touching, groping, and unwelcomed sexual advances.
|
||||
* Deliberate intimidation, stalking or following (online or in person).
|
||||
* Advocating for, or encouraging, any of the above behavior.
|
||||
* Sustained disruption of community events, including talks and presentations.
|
||||
|
||||
## 5. Weapons Policy
|
||||
|
||||
No weapons will be allowed at Hadder events, community spaces, or in other spaces covered by the scope of this Code of Conduct. Weapons include but are not limited to guns, explosives (including fireworks), and large knives such as those used for hunting or display, as well as any other item used for the purpose of causing injury or harm to others. Anyone seen in possession of one of these items will be asked to leave immediately, and will only be allowed to return without the weapon. Community members are further expected to comply with all state and local laws on this matter.
|
||||
|
||||
## 6. Consequences of Unacceptable Behavior
|
||||
|
||||
Unacceptable behavior from any community member, including sponsors and those with decision-making authority, will not be tolerated.
|
||||
|
||||
Anyone asked to stop unacceptable behavior is expected to comply immediately.
|
||||
|
||||
If a community member engages in unacceptable behavior, the community organizers may take any action they deem appropriate, up to and including a temporary ban or permanent expulsion from the community without warning (and without refund in the case of a paid event).
|
||||
|
||||
## 7. Reporting Guidelines
|
||||
|
||||
If you are subject to or witness unacceptable behavior, or have any other concerns, please notify a community organizer as soon as possible. admin@bigbotnetwork.de.
|
||||
|
||||
|
||||
|
||||
Additionally, community organizers are available to help community members engage with local law enforcement or to otherwise help those experiencing unacceptable behavior feel safe. In the context of in-person events, organizers will also provide escorts as desired by the person experiencing distress.
|
||||
|
||||
## 8. Addressing Grievances
|
||||
|
||||
If you feel you have been falsely or unfairly accused of violating this Code of Conduct, you should notify BigBotNetwork with a concise description of your grievance. Your grievance will be handled in accordance with our existing governing policies.
|
||||
|
||||
|
||||
|
||||
## 9. Scope
|
||||
|
||||
We expect all community participants (contributors, paid or otherwise; sponsors; and other guests) to abide by this Code of Conduct in all community venues--online and in-person--as well as in all one-on-one communications pertaining to community business.
|
||||
|
||||
This code of conduct and its related procedures also applies to unacceptable behavior occurring outside the scope of community activities when such behavior has the potential to adversely affect the safety and well-being of community members.
|
||||
|
||||
## 10. Contact info
|
||||
|
||||
admin@bigbotnetwork.de
|
||||
|
||||
## 11. License and attribution
|
||||
|
||||
The Citizen Code of Conduct is distributed by [Stumptown Syndicate](http://stumptownsyndicate.org) under a [Creative Commons Attribution-ShareAlike license](http://creativecommons.org/licenses/by-sa/3.0/).
|
||||
|
||||
Portions of text derived from the [Django Code of Conduct](https://www.djangoproject.com/conduct/) and the [Geek Feminism Anti-Harassment Policy](http://geekfeminism.wikia.com/wiki/Conference_anti-harassment/Policy).
|
||||
|
||||
_Revision 2.3. Posted 6 March 2017._
|
||||
|
||||
_Revision 2.2. Posted 4 February 2016._
|
||||
|
||||
_Revision 2.1. Posted 23 June 2014._
|
||||
|
||||
_Revision 2.0, adopted by the [Stumptown Syndicate](http://stumptownsyndicate.org) board on 10 January 2013. Posted 17 March 2013._
|
||||
29
pom.xml
29
pom.xml
|
|
@ -19,20 +19,29 @@
|
|||
<dependency>
|
||||
<groupId>junit</groupId>
|
||||
<artifactId>junit</artifactId>
|
||||
<version>4.11</version>
|
||||
<version>LATEST</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>net.dv8tion</groupId>
|
||||
<artifactId>JDA</artifactId>
|
||||
<version>4.0.0_54</version>
|
||||
<version>LATEST</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.json</groupId>
|
||||
<artifactId>json</artifactId>
|
||||
<version>20190722</version>
|
||||
<version>LATEST</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.rethinkdb</groupId>
|
||||
<artifactId>rethinkdb-driver</artifactId>
|
||||
<version>LATEST</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.google.code.gson</groupId>
|
||||
<artifactId>gson</artifactId>
|
||||
<version>LATEST</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
<repositories>
|
||||
|
|
@ -45,14 +54,11 @@
|
|||
|
||||
<build>
|
||||
<pluginManagement>
|
||||
<!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
|
||||
<plugins>
|
||||
<!-- clean lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle -->
|
||||
<plugin>
|
||||
<artifactId>maven-clean-plugin</artifactId>
|
||||
<version>3.1.0</version>
|
||||
</plugin>
|
||||
<!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging -->
|
||||
<plugin>
|
||||
<artifactId>maven-resources-plugin</artifactId>
|
||||
<version>3.0.2</version>
|
||||
|
|
@ -77,7 +83,6 @@
|
|||
<artifactId>maven-deploy-plugin</artifactId>
|
||||
<version>2.8.2</version>
|
||||
</plugin>
|
||||
<!-- site lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#site_Lifecycle -->
|
||||
<plugin>
|
||||
<artifactId>maven-site-plugin</artifactId>
|
||||
<version>3.7.1</version>
|
||||
|
|
@ -97,6 +102,14 @@
|
|||
<target>13</target>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<configuration>
|
||||
<source>12</source>
|
||||
<target>12</target>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
||||
0
src/main/Translations/DE_TRANSLATION.properties
Normal file
0
src/main/Translations/DE_TRANSLATION.properties
Normal file
0
src/main/Translations/EN_TRANSLATION.properties
Normal file
0
src/main/Translations/EN_TRANSLATION.properties
Normal file
|
|
@ -1,6 +1,10 @@
|
|||
package com.bbn.hadder;
|
||||
|
||||
import com.bbn.hadder.listener.MentionListener;
|
||||
import com.bbn.hadder.commands.TestCommand;
|
||||
import com.bbn.hadder.commands.moderation.BanCommand;
|
||||
import com.bbn.hadder.commands.settings.PrefixCommand;
|
||||
import com.bbn.hadder.core.CommandHandler;
|
||||
import com.bbn.hadder.listener.*;
|
||||
import net.dv8tion.jda.api.entities.Activity;
|
||||
import net.dv8tion.jda.api.sharding.DefaultShardManagerBuilder;
|
||||
import net.dv8tion.jda.api.sharding.ShardManager;
|
||||
|
|
@ -16,26 +20,38 @@ public class Hadder {
|
|||
|
||||
public static void main(String[] args) {
|
||||
|
||||
File jsonfile = new File("./config.json");
|
||||
if (!jsonfile.exists()) {
|
||||
File configfile = new File("./config.json");
|
||||
if (!configfile.exists()) {
|
||||
System.err.println("No Config File Found!");
|
||||
System.exit(1);
|
||||
}
|
||||
|
||||
JSONObject config = null;
|
||||
try {
|
||||
config = new JSONObject(new String(Files.readAllBytes(Paths.get(jsonfile.toURI()))));
|
||||
config = new JSONObject(new String(Files.readAllBytes(Paths.get(configfile.toURI()))));
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
Rethink.connect();
|
||||
|
||||
|
||||
DefaultShardManagerBuilder builder = new DefaultShardManagerBuilder();
|
||||
|
||||
builder.setShardsTotal(1);
|
||||
builder.setActivity(Activity.streaming("auf dem BigBotNetwork", "https://twitch.tv/BigBotNetwork"));
|
||||
builder.setToken(config.getString("Token"));
|
||||
|
||||
builder.addEventListeners(new MentionListener());
|
||||
CommandHandler.cmdlist.put("test", new TestCommand());
|
||||
CommandHandler.cmdlist.put("ban", new BanCommand());
|
||||
CommandHandler.cmdlist.put("prefix", new PrefixCommand());
|
||||
|
||||
builder.addEventListeners(
|
||||
new MentionListener(),
|
||||
new PrivateMessageListener(),
|
||||
new CommandListener(),
|
||||
new GuildJoinListener(),
|
||||
new GuildLeaveListener());
|
||||
|
||||
try {
|
||||
ShardManager shardManager = builder.build();
|
||||
|
|
|
|||
|
|
@ -1,32 +0,0 @@
|
|||
package com.bbn.hadder;
|
||||
|
||||
import net.dv8tion.jda.api.EmbedBuilder;
|
||||
|
||||
import java.awt.*;
|
||||
|
||||
public class MessageEditor {
|
||||
|
||||
public EmbedBuilder setDefaultSettings(Messagetype type, EmbedBuilder embedBuilder) {
|
||||
switch (type) {
|
||||
case INFO:
|
||||
embedBuilder.setColor(new Color(47,94,105));
|
||||
break;
|
||||
|
||||
case ERROR:
|
||||
embedBuilder.setColor(Color.RED);
|
||||
break;
|
||||
|
||||
case WARNING:
|
||||
embedBuilder.setColor(Color.ORANGE);
|
||||
break;
|
||||
}
|
||||
return embedBuilder;
|
||||
}
|
||||
|
||||
public enum Messagetype {
|
||||
ERROR,
|
||||
WARNING,
|
||||
INFO
|
||||
}
|
||||
|
||||
}
|
||||
73
src/main/java/com/bbn/hadder/Rethink.java
Normal file
73
src/main/java/com/bbn/hadder/Rethink.java
Normal file
|
|
@ -0,0 +1,73 @@
|
|||
package com.bbn.hadder;
|
||||
|
||||
import com.rethinkdb.RethinkDB;
|
||||
import com.rethinkdb.net.Connection;
|
||||
import com.rethinkdb.net.Cursor;
|
||||
import com.google.gson.JsonParser;
|
||||
|
||||
import java.util.NoSuchElementException;
|
||||
|
||||
/*
|
||||
* @author Skidder / GregTCLTK
|
||||
*/
|
||||
|
||||
public class Rethink {
|
||||
private static RethinkDB r = RethinkDB.r;
|
||||
static Connection conn;
|
||||
|
||||
public static boolean connect() {
|
||||
try {
|
||||
conn = r.connection().hostname("127.0.0.1").db("Hadder").port(28015).connect();
|
||||
System.out.println("CONNECTED");
|
||||
} catch (Exception e) {
|
||||
System.out.println(e.toString());
|
||||
System.out.println("CONNECTION FAILED");
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public static void disconnect() {
|
||||
conn.close();
|
||||
System.out.println("DISCONNECTED");
|
||||
}
|
||||
|
||||
public static String get(String table, String where, String value, String column) {
|
||||
try {
|
||||
Cursor cursor = r.table(table).filter(row -> row.g(where.toLowerCase()).eq(value)).run(conn);
|
||||
if (cursor.hasNext()) {
|
||||
String sad = new JsonParser().parse(cursor.next().toString()).getAsJsonObject().get(column).toString();
|
||||
if (sad.startsWith("\"") && sad.endsWith("\"")) {
|
||||
return sad.substring(1, sad.length()-1);
|
||||
} else {
|
||||
return sad;
|
||||
}
|
||||
} else return null;
|
||||
} catch (NoSuchElementException e) {
|
||||
return null;
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return "<3";
|
||||
}
|
||||
|
||||
public static String update(String table, String whatvalue, String where, String wherevalue) {
|
||||
String out="";
|
||||
try {
|
||||
Cursor cursor = r.table(table).get(whatvalue).update(r.hashMap(where, wherevalue)).run(conn);
|
||||
out=cursor.toString();
|
||||
} catch (ClassCastException ignored) {}
|
||||
return out;
|
||||
}
|
||||
|
||||
public static String insertServer(String id) {
|
||||
String out = "";
|
||||
try {
|
||||
Cursor cursor = r.table("server")
|
||||
.insert(r.hashMap("id", id)
|
||||
.with("prefix", "h.")
|
||||
).run(conn);
|
||||
out = cursor.next().toString();
|
||||
} catch (ClassCastException ignored) {}
|
||||
return out;
|
||||
}
|
||||
}
|
||||
11
src/main/java/com/bbn/hadder/commands/Command.java
Normal file
11
src/main/java/com/bbn/hadder/commands/Command.java
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
package com.bbn.hadder.commands;
|
||||
|
||||
/*
|
||||
* @author Skidder / GregTCLTK
|
||||
*/
|
||||
|
||||
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
|
||||
|
||||
public interface Command {
|
||||
void executed(String[] args, MessageReceivedEvent event);
|
||||
}
|
||||
14
src/main/java/com/bbn/hadder/commands/TestCommand.java
Normal file
14
src/main/java/com/bbn/hadder/commands/TestCommand.java
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
package com.bbn.hadder.commands;
|
||||
|
||||
/*
|
||||
* @author Skidder / GregTCLTK
|
||||
*/
|
||||
|
||||
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
|
||||
|
||||
public class TestCommand implements Command {
|
||||
|
||||
public void executed(String[] args, MessageReceivedEvent event) {
|
||||
event.getTextChannel().sendMessage("TEST my friends").queue();
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,46 @@
|
|||
package com.bbn.hadder.commands.moderation;
|
||||
|
||||
/*
|
||||
* @author Skidder / GregTCLTK
|
||||
*/
|
||||
|
||||
import com.bbn.hadder.commands.Command;
|
||||
import com.bbn.hadder.utils.MessageEditor;
|
||||
import net.dv8tion.jda.api.EmbedBuilder;
|
||||
import net.dv8tion.jda.api.Permission;
|
||||
import net.dv8tion.jda.api.entities.Member;
|
||||
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
|
||||
|
||||
public class BanCommand implements Command {
|
||||
|
||||
public void executed(String[] args, MessageReceivedEvent event) {
|
||||
if (event.getGuild().getMemberById(event.getAuthor().getId()).hasPermission(Permission.BAN_MEMBERS) || event.getGuild().getOwner().getId().equals(event.getAuthor().getId())) {
|
||||
if (event.getMessage().getMentionedMembers().size() == 1) {
|
||||
Member victim = event.getMessage().getMentionedMembers().get(0);
|
||||
if (!event.getAuthor().getId().equals(victim.getId())) {
|
||||
if (event.getGuild().getSelfMember().canInteract(victim)) {
|
||||
event.getGuild().ban(victim, 0, "Banned by " + event.getAuthor().getAsTag()).queue();
|
||||
EmbedBuilder builder = new EmbedBuilder();
|
||||
event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.INFO, builder).setTitle("✅ Successfully banned ✅").setDescription("I successfully baned " + victim.getUser().getName() + ".").build()).queue();
|
||||
} else {
|
||||
EmbedBuilder builder = new EmbedBuilder();
|
||||
event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.NO_SELF_PERMISSION, builder).build()).queue();
|
||||
}
|
||||
} else {
|
||||
EmbedBuilder builder = new EmbedBuilder();
|
||||
event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.WARNING, builder).setTitle("Not possible").setDescription("You can't ban yourself.").build()).queue();
|
||||
}
|
||||
} else if (event.getMessage().getMentionedMembers().size() == 0) {
|
||||
EmbedBuilder builder = new EmbedBuilder();
|
||||
event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.WARNING, builder).setDescription("You have to mention a user!").build()).queue();
|
||||
} else {
|
||||
EmbedBuilder builder = new EmbedBuilder();
|
||||
event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.WARNING, builder).setDescription("We will be adding multiple banning within a command in the future.").build()).queue();
|
||||
}
|
||||
|
||||
} else {
|
||||
EmbedBuilder builder = new EmbedBuilder();
|
||||
event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.NO_PERMISSION, builder).build()).queue();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
package com.bbn.hadder.commands.owner;
|
||||
|
||||
/*
|
||||
* @author Skidder / GregTCLTK
|
||||
*/
|
||||
|
||||
import com.bbn.hadder.Rethink;
|
||||
import com.bbn.hadder.commands.Command;
|
||||
import com.bbn.hadder.utils.MessageEditor;
|
||||
import net.dv8tion.jda.api.EmbedBuilder;
|
||||
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
|
||||
|
||||
public class ShutdownCommand implements Command {
|
||||
@Override
|
||||
public void executed(String[] args, MessageReceivedEvent event) {
|
||||
if (event.getAuthor().getId().equals("477141528981012511") || event.getAuthor().getId().equals("261083609148948488")) {
|
||||
EmbedBuilder builder = new EmbedBuilder();
|
||||
event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.INFO, builder).setTitle("Shutdown").build()).queue();
|
||||
event.getJDA().shutdown();
|
||||
Rethink.disconnect();
|
||||
} else {
|
||||
EmbedBuilder builder = new EmbedBuilder();
|
||||
event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.NO_PERMISSION, builder).build()).queue();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,39 @@
|
|||
package com.bbn.hadder.commands.settings;
|
||||
|
||||
/*
|
||||
* @author Skidder / GregTCLTK
|
||||
*/
|
||||
|
||||
import com.bbn.hadder.Rethink;
|
||||
import com.bbn.hadder.commands.Command;
|
||||
import com.bbn.hadder.utils.MessageEditor;
|
||||
import net.dv8tion.jda.api.EmbedBuilder;
|
||||
import net.dv8tion.jda.api.Permission;
|
||||
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
|
||||
|
||||
|
||||
public class PrefixCommand implements Command {
|
||||
public void executed(String[] args, MessageReceivedEvent event) {
|
||||
if (event.getGuild().getMemberById(event.getAuthor().getId()).hasPermission(Permission.MANAGE_SERVER)) {
|
||||
if (args.length == 1) {
|
||||
if (!args[0].contains("\"")) {
|
||||
|
||||
Rethink.update("server", event.getGuild().getId(), "prefix", args[0]);
|
||||
|
||||
EmbedBuilder builder = new EmbedBuilder();
|
||||
|
||||
event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.INFO, builder).setTitle("✅ Successfully set ✅").setDescription("I successfully set the new prefix for this server to " + args[0]).build()).queue();
|
||||
} else {
|
||||
EmbedBuilder builder = new EmbedBuilder();
|
||||
event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.WARNING, builder).setDescription("The prefix must not contain **\"**").build()).queue();
|
||||
}
|
||||
} else {
|
||||
EmbedBuilder builder = new EmbedBuilder();
|
||||
event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.WARNING, builder).setDescription("You have to set a prefix.").build()).queue();
|
||||
}
|
||||
} else {
|
||||
EmbedBuilder builder = new EmbedBuilder();
|
||||
event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.NO_PERMISSION, builder).build()).queue();
|
||||
}
|
||||
}
|
||||
}
|
||||
21
src/main/java/com/bbn/hadder/core/CommandHandler.java
Normal file
21
src/main/java/com/bbn/hadder/core/CommandHandler.java
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
package com.bbn.hadder.core;
|
||||
|
||||
/*
|
||||
* @author Skidder / GregTCLTK
|
||||
*/
|
||||
|
||||
import com.bbn.hadder.commands.Command;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
public class CommandHandler {
|
||||
|
||||
public static HashMap<String, Command> cmdlist = new HashMap<>();
|
||||
|
||||
public static void handleCommand(CommandParser.commandContainer cmd) {
|
||||
if(cmdlist.containsKey(cmd.invoke)) {
|
||||
cmdlist.get(cmd.invoke).executed(cmd.args, cmd.event);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
46
src/main/java/com/bbn/hadder/core/CommandParser.java
Normal file
46
src/main/java/com/bbn/hadder/core/CommandParser.java
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
package com.bbn.hadder.core;
|
||||
|
||||
/*
|
||||
* @author Skidder / GregTCLTK
|
||||
*/
|
||||
|
||||
import com.bbn.hadder.Rethink;
|
||||
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
|
||||
public class CommandParser {
|
||||
public static commandContainer parser(String raw, MessageReceivedEvent event) {
|
||||
|
||||
String cmd = raw.replaceFirst(Rethink.get("server", "id", event.getGuild().getId(), "prefix"), "");
|
||||
String[] cmdsplit = cmd.split(" ");
|
||||
String invoke = cmdsplit[0];
|
||||
ArrayList<String> split = new ArrayList<>();
|
||||
Collections.addAll(split, cmdsplit);
|
||||
String[] args = new String[split.size() - 1];
|
||||
split.subList(1, split.size()).toArray(args);
|
||||
|
||||
return new commandContainer(raw, cmd, cmdsplit, invoke, args, event);
|
||||
}
|
||||
|
||||
static class commandContainer {
|
||||
|
||||
final String raw;
|
||||
final String cmd;
|
||||
final String[] cmdsplit;
|
||||
final String invoke;
|
||||
final String[] args;
|
||||
final MessageReceivedEvent event;
|
||||
|
||||
commandContainer(String rw, String cmd, String[] cmdsplit, String invoke, String[] args, MessageReceivedEvent event) {
|
||||
this.raw = rw;
|
||||
this.cmd = cmd;
|
||||
this.cmdsplit = cmdsplit;
|
||||
this.invoke = invoke;
|
||||
this.args = args;
|
||||
this.event = event;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
23
src/main/java/com/bbn/hadder/listener/BotListListener.java
Normal file
23
src/main/java/com/bbn/hadder/listener/BotListListener.java
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
package com.bbn.hadder.listener;
|
||||
|
||||
/*
|
||||
* @author Skidder / GregTCLTK
|
||||
*/
|
||||
|
||||
import net.dv8tion.jda.api.events.guild.GuildJoinEvent;
|
||||
import net.dv8tion.jda.api.events.guild.GuildLeaveEvent;
|
||||
import net.dv8tion.jda.api.hooks.ListenerAdapter;
|
||||
|
||||
public class BotListListener extends ListenerAdapter {
|
||||
|
||||
public void onGuildJoin(GuildJoinEvent event) {
|
||||
|
||||
|
||||
}
|
||||
|
||||
public void onGuildLeave(GuildLeaveEvent event) {
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
31
src/main/java/com/bbn/hadder/listener/CommandListener.java
Normal file
31
src/main/java/com/bbn/hadder/listener/CommandListener.java
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
package com.bbn.hadder.listener;
|
||||
|
||||
import com.bbn.hadder.Rethink;
|
||||
import com.bbn.hadder.core.CommandHandler;
|
||||
import com.bbn.hadder.core.CommandParser;
|
||||
import net.dv8tion.jda.api.Permission;
|
||||
import net.dv8tion.jda.api.entities.ChannelType;
|
||||
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
|
||||
import net.dv8tion.jda.api.hooks.ListenerAdapter;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
/*
|
||||
* @author Skidder / GregTCLTK
|
||||
*/
|
||||
|
||||
public class CommandListener extends ListenerAdapter {
|
||||
|
||||
@Override
|
||||
public void onMessageReceived(@Nonnull MessageReceivedEvent event) {
|
||||
if (event.isFromType(ChannelType.TEXT)) {
|
||||
if (event.getMessage().getContentRaw().startsWith(Rethink.get("server", "id", event.getGuild().getId(), "prefix"))) {
|
||||
if (!event.getAuthor().isBot()) {
|
||||
CommandHandler.handleCommand(CommandParser.parser(event.getMessage().getContentRaw(), event));
|
||||
} else if (event.getGuild().getSelfMember().hasPermission(Permission.MESSAGE_ADD_REACTION)) {
|
||||
event.getMessage().addReaction("🙅").queue();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
16
src/main/java/com/bbn/hadder/listener/GuildJoinListener.java
Normal file
16
src/main/java/com/bbn/hadder/listener/GuildJoinListener.java
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
package com.bbn.hadder.listener;
|
||||
|
||||
/*
|
||||
* @author Skidder / GregTCLTK
|
||||
*/
|
||||
|
||||
import com.bbn.hadder.Rethink;
|
||||
import net.dv8tion.jda.api.events.guild.GuildJoinEvent;
|
||||
import net.dv8tion.jda.api.hooks.ListenerAdapter;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class GuildJoinListener extends ListenerAdapter {
|
||||
public void onGuildJoin(@NotNull GuildJoinEvent event) {
|
||||
Rethink.insertServer(event.getGuild().getId());
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
package com.bbn.hadder.listener;
|
||||
|
||||
/*
|
||||
* @author Skidder / GregTCLTK
|
||||
*/
|
||||
|
||||
import net.dv8tion.jda.api.events.guild.GuildLeaveEvent;
|
||||
import net.dv8tion.jda.api.hooks.ListenerAdapter;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class GuildLeaveListener extends ListenerAdapter {
|
||||
public void onGuildLeave(@NotNull GuildLeaveEvent event) {
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -1,7 +1,8 @@
|
|||
package com.bbn.hadder.listener;
|
||||
|
||||
import com.bbn.hadder.MessageEditor;
|
||||
import com.bbn.hadder.utils.MessageEditor;
|
||||
import net.dv8tion.jda.api.EmbedBuilder;
|
||||
import net.dv8tion.jda.api.entities.ChannelType;
|
||||
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
|
||||
import net.dv8tion.jda.api.hooks.ListenerAdapter;
|
||||
|
||||
|
|
@ -11,7 +12,8 @@ public class MentionListener extends ListenerAdapter {
|
|||
|
||||
@Override
|
||||
public void onMessageReceived(@Nonnull MessageReceivedEvent event) {
|
||||
if (event.getMessage().getContentRaw().equals(event.getJDA().getSelfUser().getAsMention())) {
|
||||
if (event.isFromType(ChannelType.TEXT)) {
|
||||
if (event.getMessage().getContentRaw().equals("<@!" + event.getJDA().getSelfUser().getId() + ">")) {
|
||||
EmbedBuilder builder = new EmbedBuilder()
|
||||
.setTitle("Hello I'm Hadder.")
|
||||
.setAuthor(event.getJDA().getSelfUser().getName(), event.getJDA().getSelfUser().getAvatarUrl(), event.getJDA().getSelfUser().getAvatarUrl())
|
||||
|
|
@ -20,4 +22,5 @@ public class MentionListener extends ListenerAdapter {
|
|||
event.getChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.INFO, builder).build()).queue();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,37 @@
|
|||
package com.bbn.hadder.listener;
|
||||
|
||||
/*
|
||||
* @author Skidder / GregTCLTK
|
||||
*/
|
||||
|
||||
import com.bbn.hadder.utils.MessageEditor;
|
||||
import net.dv8tion.jda.api.EmbedBuilder;
|
||||
import net.dv8tion.jda.api.entities.ChannelType;
|
||||
import net.dv8tion.jda.api.entities.PrivateChannel;
|
||||
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
|
||||
import net.dv8tion.jda.api.hooks.ListenerAdapter;
|
||||
|
||||
import java.time.Instant;
|
||||
|
||||
public class PrivateMessageListener extends ListenerAdapter {
|
||||
|
||||
public void onMessageReceived(MessageReceivedEvent event) {
|
||||
if (event.isFromType(ChannelType.PRIVATE)) {
|
||||
if (!event.getAuthor().getId().equals(event.getJDA().getSelfUser().getId())) {
|
||||
|
||||
PrivateChannel Skidder = event.getJDA().getUserById("477141528981012511").openPrivateChannel().complete();
|
||||
PrivateChannel Hax = event.getJDA().getUserById("261083609148948488").openPrivateChannel().complete();
|
||||
|
||||
if (event.getAuthor().getAvatarUrl() == null) {
|
||||
EmbedBuilder message = new EmbedBuilder().setTitle("New DM by " + event.getAuthor().getAsTag()).setAuthor(event.getAuthor().getName(), event.getAuthor().getDefaultAvatarUrl(), event.getAuthor().getDefaultAvatarUrl()).setDescription(event.getMessage().getContentRaw()).setTimestamp(Instant.now());
|
||||
|
||||
Skidder.sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.INFO, message).build()).queue();
|
||||
} else {
|
||||
EmbedBuilder message = new EmbedBuilder().setTitle("New DM by " + event.getAuthor().getAsTag()).setAuthor(event.getAuthor().getName(), event.getAuthor().getAvatarUrl(), event.getAuthor().getAvatarUrl()).setDescription(event.getMessage().getContentRaw()).setTimestamp(Instant.now());
|
||||
|
||||
Skidder.sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.Messagetype.INFO, message).build()).queue();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
42
src/main/java/com/bbn/hadder/utils/MessageEditor.java
Normal file
42
src/main/java/com/bbn/hadder/utils/MessageEditor.java
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
package com.bbn.hadder.utils;
|
||||
|
||||
import net.dv8tion.jda.api.EmbedBuilder;
|
||||
|
||||
import java.awt.*;
|
||||
|
||||
public class MessageEditor {
|
||||
|
||||
public EmbedBuilder setDefaultSettings(Messagetype type, EmbedBuilder embedBuilder) {
|
||||
switch (type) {
|
||||
case INFO:
|
||||
embedBuilder.setColor(new Color(47,94,105));
|
||||
break;
|
||||
|
||||
case ERROR:
|
||||
embedBuilder.setColor(Color.RED);
|
||||
break;
|
||||
|
||||
case WARNING:
|
||||
embedBuilder.setTitle("⚠ Warning ⚠").setColor(Color.ORANGE);
|
||||
break;
|
||||
|
||||
case NO_PERMISSION:
|
||||
embedBuilder.setTitle("⛔ No Permission ⛔").setDescription("You are not authorized to execute this command!").setColor(Color.RED);
|
||||
break;
|
||||
|
||||
case NO_SELF_PERMISSION:
|
||||
embedBuilder.setTitle("⛔ No Permission ⛔").setDescription("Unfortunately, I do not have the required rights to perform this action").setColor(Color.RED);
|
||||
break;
|
||||
}
|
||||
return embedBuilder;
|
||||
}
|
||||
|
||||
public enum Messagetype {
|
||||
ERROR,
|
||||
WARNING,
|
||||
INFO,
|
||||
NO_PERMISSION,
|
||||
NO_SELF_PERMISSION
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Add table
Reference in a new issue