Hey ich programmiere einen Discord Bot in Java Maven.
Ich habe einen Command, der einem User einen Rang für bestimmte Zeit vergeben soll, in dem Fall einen Muted Rang. Beim kompilieren bekomme ich keinen Fehler, aber der Command wird nicht ausgeführt. Ich bekomme nicht einmal den Embed Builder zurück..
Das ist mein CommandManager (Funktion wurde natürlich registriert)
Das hier ist der Command, der ausgeführt werden soll:
Und das ist mein LiteSQLManager
Diese Funktion wird jede Minute aufgerufen und soll prüfen, ob der User die 15 Min überschritten hat oder nicht. Wenn ja -> soll die Rolle wieder entfernt werden:
Hat irgendjemand Hilfe.. ich verzweifle daran....
Ich habe einen Command, der einem User einen Rang für bestimmte Zeit vergeben soll, in dem Fall einen Muted Rang. Beim kompilieren bekomme ich keinen Fehler, aber der Command wird nicht ausgeführt. Ich bekomme nicht einmal den Embed Builder zurück..
Das ist mein CommandManager (Funktion wurde natürlich registriert)
Java:
public class CommandManager {
public ConcurrentHashMap<String, ServerCommand> commands;
public CommandManager() {
this.commands = new ConcurrentHashMap<>();
this.commands.put("clear", new ClearCommand());
this.commands.put("preview", new PreviewCommand());
this.commands.put("client", new ClientInfoCommand());
this.commands.put("help", new HelpCommand());
this.commands.put("vote", new VoteCommand());
this.commands.put("play", new PlayCommand());
this.commands.put("stop", new StopCommand());
this.commands.put("trackinfo", new TrackInfoCommand());
this.commands.put("shuffle", new ShuffleCommand());
this.commands.put("statchannel", new StatChannelCommand());
this.commands.put("timerank", new TimeRankCommand());
}
public boolean perform(String command, Member m, TextChannel channel, Message message, MessageReceivedEvent event) {
ServerCommand cmd;
if((cmd = this.commands.get(command.toLowerCase())) != null) {
cmd.performCommand(m, channel, message, event);
return true;
}
return false;
}
}
Das hier ist der Command, der ausgeführt werden soll:
Java:
public class TimeRankCommand implements ServerCommand {
@Override
public void performCommand(Member m, TextChannel channel, Message message, MessageReceivedEvent event) {
//~timerank @User
if (m.hasPermission(Permission.ADMINISTRATOR)) {
List<Member> members = message.getMentionedMembers();
if(members.size() >= 1) {
for(Member memb : members) {
Guild guild = channel.getGuild();
Role role = guild.getRoleById(648047607486087168l);
if(memb.getRoles().contains(role)) {
guild.addRoleToMember(memb, role).queue();
LiteSQL.onUpdate("INSERT INTO timeranks(userid, guildid) VALUES(" + memb.getIdLong() + ", " + guild.getIdLong() + ")");
EmbedBuilder builder = new EmbedBuilder();
builder.setTitle("Timerank");
builder.setThumbnail("http://i.epvpimg.com/toDBaab.png");
builder.setFooter("Powered by Backxtar.");
builder.setTimestamp(OffsetDateTime.now());
builder.setColor(0xf22613);
builder.setDescription(memb.getAsMention() + " is **MUTED** for 15 minutes!");
channel.sendMessage(builder.build()).queue();
}
}
}
}
}
}
Und das ist mein LiteSQLManager
Java:
public class SQLManager {
public static void onCreate() {
//TimeRank
LiteSQL.onUpdate("CREATE TABLE IF NOT EXISTS timeranks(id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, userid INTEGER, guildid INTEGER, time TIMESTAMP DEFAULT CURRENT_TIMESTAMP)");
}
}
Diese Funktion wird jede Minute aufgerufen und soll prüfen, ob der User die 15 Min überschritten hat oder nicht. Wenn ja -> soll die Rolle wieder entfernt werden:
Java:
public void onCheckTimeRanks() {
ResultSet set = LiteSQL.onQuery("SELECT userid, guildid FROM timeranks WHERE ((julianday(CURRENT_TIMESTAMP) - julianday(time)) * 1000) >= 15");
try {
while(set.next()) {
long userid = set.getLong("userid");
long guildid = set.getLong("guildid");
Guild guild = this.shardMan.getGuildById(guildid);
guild.removeRoleFromMember(guild.getMemberById(userid), guild.getRoleById(648047607486087168l)).complete();
LiteSQL.onUpdate("DELETE FROM timeranks WHERE userid = " + userid);
}
} catch (SQLException e) {
e.printStackTrace();
}
}
Hat irgendjemand Hilfe.. ich verzweifle daran....