mirror of
https://github.com/sigmasternchen/NurseBot
synced 2025-03-15 08:08:58 +00:00
Additional cleanup
This commit is contained in:
parent
b361845502
commit
0fa2b829d0
25 changed files with 88 additions and 92 deletions
|
@ -439,7 +439,7 @@ public class NurseNoakes extends TelegramLongPollingBot {
|
||||||
logger.info("Loading dependencies.");
|
logger.info("Loading dependencies.");
|
||||||
loader.loadDependencies();
|
loader.loadDependencies();
|
||||||
logger.info("Loading regular modules.");
|
logger.info("Loading regular modules.");
|
||||||
loader.loadModules(module -> loadModule(module));
|
loader.loadModules(this::loadModule);
|
||||||
|
|
||||||
|
|
||||||
if (ModelManager.wasAnythingCreated()) {
|
if (ModelManager.wasAnythingCreated()) {
|
||||||
|
@ -466,14 +466,7 @@ public class NurseNoakes extends TelegramLongPollingBot {
|
||||||
|
|
||||||
public void stop() {
|
public void stop() {
|
||||||
logger.info("Shuting down...");
|
logger.info("Shuting down...");
|
||||||
for(Module module : activeModules) {
|
disableModules();
|
||||||
logger.verbose("Shutting down module " + module.getName() + "...");
|
|
||||||
module.shutdown();
|
|
||||||
}
|
|
||||||
for(Module module : inactiveModules) {
|
|
||||||
logger.verbose("Shutting down module " + module.getName() + "...");
|
|
||||||
module.shutdown();
|
|
||||||
}
|
|
||||||
|
|
||||||
logger.debug("Closing database connection.");
|
logger.debug("Closing database connection.");
|
||||||
connector.close();
|
connector.close();
|
||||||
|
@ -481,9 +474,8 @@ public class NurseNoakes extends TelegramLongPollingBot {
|
||||||
logger.info("Shutdown complete.");
|
logger.info("Shutdown complete.");
|
||||||
System.exit(EXIT_CODE_SHUTDOWN);
|
System.exit(EXIT_CODE_SHUTDOWN);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void restart() {
|
private void disableModules() {
|
||||||
logger.info("Restarting...");
|
|
||||||
for(Module module : activeModules) {
|
for(Module module : activeModules) {
|
||||||
logger.verbose("Shutting down module " + module.getName() + "...");
|
logger.verbose("Shutting down module " + module.getName() + "...");
|
||||||
module.shutdown();
|
module.shutdown();
|
||||||
|
@ -492,7 +484,12 @@ public class NurseNoakes extends TelegramLongPollingBot {
|
||||||
logger.verbose("Shutting down module " + module.getName() + "...");
|
logger.verbose("Shutting down module " + module.getName() + "...");
|
||||||
module.shutdown();
|
module.shutdown();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void restart() {
|
||||||
|
logger.info("Restarting...");
|
||||||
|
disableModules();
|
||||||
|
|
||||||
connector.close();
|
connector.close();
|
||||||
|
|
||||||
System.exit(EXIT_CODE_RESTART);
|
System.exit(EXIT_CODE_RESTART);
|
||||||
|
|
|
@ -13,6 +13,7 @@ public class CommandCategory {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
public boolean equals(Object object) {
|
public boolean equals(Object object) {
|
||||||
if (!(object instanceof CommandCategory))
|
if (!(object instanceof CommandCategory))
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -1,21 +1,20 @@
|
||||||
package asylum.nursebot.executor;
|
package asylum.nursebot.executor;
|
||||||
|
|
||||||
import asylum.nursebot.exceptions.WhatTheFuckException;
|
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
|
||||||
|
import asylum.nursebot.exceptions.WhatTheFuckException;
|
||||||
|
|
||||||
public class CallbackContext extends HashMap<Class<?>, Object>{
|
public class CallbackContext extends HashMap<Class<?>, Object>{
|
||||||
private static final long serialVersionUID = 1988125468800948893L;
|
private static final long serialVersionUID = 1988125468800948893L;
|
||||||
|
|
||||||
public void put(Object object) {
|
public void put(Object object) {
|
||||||
put(object.getClass(), object);
|
put(object.getClass(), object);
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
public <T> T get(Class<T> clazz) {
|
public <T> T get(Class<T> clazz) {
|
||||||
Object obj = ((HashMap<Class<?>, Object>) this).get(clazz);
|
Object obj = this.get(clazz);
|
||||||
if (!(clazz.isInstance(obj)))
|
if (!(clazz.isInstance(obj)))
|
||||||
throw new WhatTheFuckException("WAT?");
|
throw new WhatTheFuckException("WAT?");
|
||||||
return (T) obj;
|
return clazz.cast(obj);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,7 +8,6 @@ public class ExitCode {
|
||||||
}
|
}
|
||||||
|
|
||||||
public ExitCode(int value) {
|
public ExitCode(int value) {
|
||||||
super();
|
|
||||||
this.value = value;
|
this.value = value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,12 +6,11 @@ import asylum.nursebot.objects.Module;
|
||||||
|
|
||||||
public class ModuleDependencies extends HashMap<Class<? extends Module>, Module>{
|
public class ModuleDependencies extends HashMap<Class<? extends Module>, Module>{
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
public <C extends Module> C get(Class<C> clazz) {
|
public <C extends Module> C get(Class<C> clazz) {
|
||||||
Module m = super.get(clazz);
|
Module m = super.get(clazz);
|
||||||
if (!(clazz.isInstance(m)))
|
if (!(clazz.isInstance(m)))
|
||||||
throw new IllegalArgumentException();
|
throw new IllegalArgumentException();
|
||||||
return (C) m;
|
return clazz.cast(m);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,9 +5,6 @@ import java.util.LinkedList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import asylum.nursebot.utils.log.Logger;
|
|
||||||
import org.reflections.Reflections;
|
|
||||||
|
|
||||||
import com.google.inject.Guice;
|
import com.google.inject.Guice;
|
||||||
import com.google.inject.Injector;
|
import com.google.inject.Injector;
|
||||||
|
|
||||||
|
@ -15,9 +12,8 @@ import asylum.nursebot.NurseNoakes;
|
||||||
import asylum.nursebot.commands.CommandHandler;
|
import asylum.nursebot.commands.CommandHandler;
|
||||||
import asylum.nursebot.objects.Module;
|
import asylum.nursebot.objects.Module;
|
||||||
import asylum.nursebot.semantics.SemanticsHandler;
|
import asylum.nursebot.semantics.SemanticsHandler;
|
||||||
import org.reflections.util.ClasspathHelper;
|
import asylum.nursebot.utils.log.Logger;
|
||||||
import org.reflections.util.ConfigurationBuilder;
|
import org.reflections.Reflections;
|
||||||
import org.reflections.util.FilterBuilder;
|
|
||||||
|
|
||||||
public class ModuleLoader {
|
public class ModuleLoader {
|
||||||
private List<Provider> providers;
|
private List<Provider> providers;
|
||||||
|
@ -37,25 +33,23 @@ public class ModuleLoader {
|
||||||
|
|
||||||
this.providers.add(new BaseProvider(nurse, commandHandler, semanticsHandler, dependencies));
|
this.providers.add(new BaseProvider(nurse, commandHandler, semanticsHandler, dependencies));
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
public void loadDependencies() {
|
public void loadDependencies() {
|
||||||
Set<Class<?>> list = reflections.getTypesAnnotatedWith(AutoDependency.class);
|
Set<Class<?>> list = reflections.getTypesAnnotatedWith(AutoDependency.class);
|
||||||
for (Class<?> clazz : list) {
|
for (Class<?> clazz : list) {
|
||||||
if (Module.class.isAssignableFrom(clazz)) {
|
if (Module.class.isAssignableFrom(clazz)) {
|
||||||
dependencyClasses.add((Class<? extends Module>) clazz);
|
dependencyClasses.add(clazz.asSubclass(Module.class));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
public void loadModules(ModuleHandler handler) {
|
public void loadModules(ModuleHandler handler) {
|
||||||
Injector injector = Guice.createInjector(providers);
|
Injector injector = Guice.createInjector(providers);
|
||||||
|
|
||||||
Set<Class<?>> annotatedClasses = reflections.getTypesAnnotatedWith(AutoModule.class);
|
Set<Class<?>> annotatedClasses = reflections.getTypesAnnotatedWith(AutoModule.class);
|
||||||
|
|
||||||
Set<Class<?>> dependenciesToLoad = new HashSet<Class<?>>();
|
Set<Class<?>> dependenciesToLoad = new HashSet<>();
|
||||||
Set<Class<?>> regularModulesToLoad = new HashSet<Class<?>>();
|
Set<Class<?>> regularModulesToLoad = new HashSet<>();
|
||||||
|
|
||||||
for (Class<?> clazz : annotatedClasses) {
|
for (Class<?> clazz : annotatedClasses) {
|
||||||
if (!Module.class.isAssignableFrom(clazz)) {
|
if (!Module.class.isAssignableFrom(clazz)) {
|
||||||
|
@ -81,7 +75,7 @@ public class ModuleLoader {
|
||||||
handler.handle(module);
|
handler.handle(module);
|
||||||
|
|
||||||
logger.verbose("Adding " + clazz.getCanonicalName() + " as dependency.");
|
logger.verbose("Adding " + clazz.getCanonicalName() + " as dependency.");
|
||||||
dependencies.put((Class<? extends Module>) clazz, module);
|
dependencies.put(clazz.asSubclass(Module.class), module);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (Class<?> clazz : regularModulesToLoad) {
|
for (Class<?> clazz : regularModulesToLoad) {
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package asylum.nursebot.modules;
|
package asylum.nursebot.modules;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.Calendar;
|
import java.util.Calendar;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
@ -203,8 +204,8 @@ public class Appointments implements Module {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean abs = "absolut".equals(list.get(1).toLowerCase()) || "absolute".equals(list.get(1).toLowerCase());
|
boolean abs = Arrays.asList("absolut", "absolute").contains(list.get(1).toLowerCase());
|
||||||
boolean rel = "relativ".equals(list.get(1).toLowerCase()) || "relative".equals(list.get(1).toLowerCase());
|
boolean rel = Arrays.asList("relativ","relative").contains(list.get(1).toLowerCase());
|
||||||
long time = 0;
|
long time = 0;
|
||||||
boolean fail = false;
|
boolean fail = false;
|
||||||
try {
|
try {
|
||||||
|
|
|
@ -11,6 +11,7 @@ import java.util.Random;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.Timer;
|
import java.util.Timer;
|
||||||
import java.util.TimerTask;
|
import java.util.TimerTask;
|
||||||
|
import java.util.concurrent.ThreadLocalRandom;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import com.google.inject.Inject;
|
import com.google.inject.Inject;
|
||||||
|
@ -142,7 +143,7 @@ public class Birthdays implements Module {
|
||||||
logger.debug("Size of congratulations list: " + congratulations.size());
|
logger.debug("Size of congratulations list: " + congratulations.size());
|
||||||
|
|
||||||
for (BirthdaysCongratulation congratulation : congratulations) {
|
for (BirthdaysCongratulation congratulation : congratulations) {
|
||||||
Random random = new Random();
|
Random random = ThreadLocalRandom.current();
|
||||||
String text = String.format(CONGRATULATIONS[random.nextInt(CONGRATULATIONS.length)], StringTools.makeMention(user));
|
String text = String.format(CONGRATULATIONS[random.nextInt(CONGRATULATIONS.length)], StringTools.makeMention(user));
|
||||||
|
|
||||||
ThreadHelper.ignore(TelegramApiException.class, () -> sender.send(congratulation.getChatId(), text, true));
|
ThreadHelper.ignore(TelegramApiException.class, () -> sender.send(congratulation.getChatId(), text, true));
|
||||||
|
@ -250,7 +251,7 @@ public class Birthdays implements Module {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
LocalDate date = null;
|
LocalDate date;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
date = LocalDate.parse(arguments.get(0));
|
date = LocalDate.parse(arguments.get(0));
|
||||||
|
@ -390,7 +391,7 @@ public class Birthdays implements Module {
|
||||||
}
|
}
|
||||||
|
|
||||||
c.getSender().reply(builder.toString(), c.getMessage());
|
c.getSender().reply(builder.toString(), c.getMessage());
|
||||||
} else if (parameters.get(0).toLowerCase().equals("all")) {
|
} else if (parameters.get(0).equalsIgnoreCase("all")) {
|
||||||
if (!isGroupChat) {
|
if (!isGroupChat) {
|
||||||
c.getSender().reply("Diese Funktion ist nur in Gruppenchats sinnvoll.", c.getMessage());
|
c.getSender().reply("Diese Funktion ist nur in Gruppenchats sinnvoll.", c.getMessage());
|
||||||
return;
|
return;
|
||||||
|
@ -405,7 +406,7 @@ public class Birthdays implements Module {
|
||||||
|
|
||||||
List<BirthdaysCongratulation> congratulations = BirthdaysCongratulation.findByChatId(chat.getId());
|
List<BirthdaysCongratulation> congratulations = BirthdaysCongratulation.findByChatId(chat.getId());
|
||||||
|
|
||||||
if (congratulations.size() == 0) {
|
if (congratulations.isEmpty()) {
|
||||||
c.getSender().reply("In diesem Chat gratuliere ich im Moment niemandem zum Geburtstag.\nWenn du die erste Person sein willst, denn benutze /enablebirthday.", c.getMessage());
|
c.getSender().reply("In diesem Chat gratuliere ich im Moment niemandem zum Geburtstag.\nWenn du die erste Person sein willst, denn benutze /enablebirthday.", c.getMessage());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,6 +24,7 @@ import asylum.nursebot.persistence.modules.BusinessCardsEntry;
|
||||||
import asylum.nursebot.persistence.modules.BusinessCardsField;
|
import asylum.nursebot.persistence.modules.BusinessCardsField;
|
||||||
import asylum.nursebot.utils.StringTools;
|
import asylum.nursebot.utils.StringTools;
|
||||||
import org.javalite.activejdbc.Base;
|
import org.javalite.activejdbc.Base;
|
||||||
|
import org.javalite.activejdbc.Model;
|
||||||
import org.telegram.telegrambots.meta.api.objects.User;
|
import org.telegram.telegrambots.meta.api.objects.User;
|
||||||
|
|
||||||
@AutoModule(load=true)
|
@AutoModule(load=true)
|
||||||
|
@ -165,13 +166,14 @@ public class BusinessCards implements Module {
|
||||||
|
|
||||||
String cardname = args.get(0);
|
String cardname = args.get(0);
|
||||||
|
|
||||||
List<BusinessCardsCard> tmp = BusinessCardsCard.getByName(cardname, c.getMessage().getFrom().getId().intValue());
|
List<BusinessCardsCard> tmp = BusinessCardsCard.getByName(cardname,
|
||||||
|
c.getMessage().getFrom().getId());
|
||||||
if (tmp == null || tmp.isEmpty()) {
|
if (tmp == null || tmp.isEmpty()) {
|
||||||
throw new ParsingException("Diese Karte existiert nicht.");
|
throw new ParsingException("Diese Karte existiert nicht.");
|
||||||
}
|
}
|
||||||
|
|
||||||
args = args.subList(1, args.size());
|
args = args.subList(1, args.size());
|
||||||
boolean isPublic = args.get(0).toLowerCase().equals("public");
|
boolean isPublic = args.get(0).equalsIgnoreCase("public");
|
||||||
if (isPublic)
|
if (isPublic)
|
||||||
args = args.subList(1, args.size());
|
args = args.subList(1, args.size());
|
||||||
|
|
||||||
|
@ -180,7 +182,7 @@ public class BusinessCards implements Module {
|
||||||
card.saveIt();
|
card.saveIt();
|
||||||
|
|
||||||
List<BusinessCardsEntry> entries = card.getAll(BusinessCardsEntry.class);
|
List<BusinessCardsEntry> entries = card.getAll(BusinessCardsEntry.class);
|
||||||
entries.forEach(e -> e.delete());
|
entries.forEach(Model::delete);
|
||||||
|
|
||||||
modifyFields(card, args);
|
modifyFields(card, args);
|
||||||
|
|
||||||
|
@ -211,13 +213,14 @@ public class BusinessCards implements Module {
|
||||||
try {
|
try {
|
||||||
String cardname = args.get(0);
|
String cardname = args.get(0);
|
||||||
|
|
||||||
List<BusinessCardsCard> tmp = BusinessCardsCard.getByName(cardname, c.getMessage().getFrom().getId().intValue());
|
List<BusinessCardsCard> tmp = BusinessCardsCard.getByName(cardname,
|
||||||
|
c.getMessage().getFrom().getId());
|
||||||
if (tmp == null || tmp.isEmpty()) {
|
if (tmp == null || tmp.isEmpty()) {
|
||||||
throw new ParsingException("Es wurde keine Karte mit diesem Namen gefunden.");
|
throw new ParsingException("Es wurde keine Karte mit diesem Namen gefunden.");
|
||||||
}
|
}
|
||||||
BusinessCardsCard card = tmp.get(0);
|
BusinessCardsCard card = tmp.get(0);
|
||||||
|
|
||||||
card.getAll(BusinessCardsEntry.class).forEach(e -> e.delete());
|
card.getAll(BusinessCardsEntry.class).forEach(Model::delete);
|
||||||
card.delete();
|
card.delete();
|
||||||
|
|
||||||
c.getSender().send("Visitenkarte " + cardname + " wurde erfolgreich gelösch.");
|
c.getSender().send("Visitenkarte " + cardname + " wurde erfolgreich gelösch.");
|
||||||
|
@ -236,7 +239,7 @@ public class BusinessCards implements Module {
|
||||||
.setAction(c -> {
|
.setAction(c -> {
|
||||||
String help = "Synopsis: /showcard CARDNAME";
|
String help = "Synopsis: /showcard CARDNAME";
|
||||||
List<String> args = StringTools.tokenize(c.getParameter());
|
List<String> args = StringTools.tokenize(c.getParameter());
|
||||||
if (args.size() < 1) {
|
if (args.isEmpty()) {
|
||||||
c.getSender().send(help);
|
c.getSender().send(help);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -255,11 +258,6 @@ public class BusinessCards implements Module {
|
||||||
|
|
||||||
List<BusinessCardsEntry> list = card.getAll(BusinessCardsEntry.class);
|
List<BusinessCardsEntry> list = card.getAll(BusinessCardsEntry.class);
|
||||||
for (BusinessCardsEntry entry : list) {
|
for (BusinessCardsEntry entry : list) {
|
||||||
/*List<BusinessCardsField> fields = entry.getAll(BusinessCardsField.class);
|
|
||||||
if ((fields == null) || fields.isEmpty()) {
|
|
||||||
throw new WhatTheFuckException("Field object is inconsistent.");
|
|
||||||
}
|
|
||||||
BusinessCardsField field = fields.get(0);*/
|
|
||||||
BusinessCardsField field = entry.parent(BusinessCardsField.class);
|
BusinessCardsField field = entry.parent(BusinessCardsField.class);
|
||||||
builder.append(field.getLabel()).append(": ");
|
builder.append(field.getLabel()).append(": ");
|
||||||
builder.append(entry.getValue()).append("\n");
|
builder.append(entry.getValue()).append("\n");
|
||||||
|
@ -281,7 +279,7 @@ public class BusinessCards implements Module {
|
||||||
.setAction(c -> {
|
.setAction(c -> {
|
||||||
String help = "Synopsis: /givecard CARDNAME USERNAME";
|
String help = "Synopsis: /givecard CARDNAME USERNAME";
|
||||||
List<String> args = StringTools.tokenize(c.getParameter());
|
List<String> args = StringTools.tokenize(c.getParameter());
|
||||||
if (args.size() < 1) {
|
if (args.isEmpty()) {
|
||||||
c.getSender().send(help);
|
c.getSender().send(help);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -315,7 +313,8 @@ public class BusinessCards implements Module {
|
||||||
|
|
||||||
builder.append("Visitenkarte ").append(StringTools.makeMention(c.getMessage().getFrom())).append(" ").append(cardname).append(":\n\n");
|
builder.append("Visitenkarte ").append(StringTools.makeMention(c.getMessage().getFrom())).append(" ").append(cardname).append(":\n\n");
|
||||||
|
|
||||||
List<BusinessCardsCard> tmp = BusinessCardsCard.getByName(cardname, c.getMessage().getFrom().getId().intValue());
|
List<BusinessCardsCard> tmp = BusinessCardsCard.getByName(cardname,
|
||||||
|
c.getMessage().getFrom().getId());
|
||||||
if (tmp == null || tmp.isEmpty()) {
|
if (tmp == null || tmp.isEmpty()) {
|
||||||
throw new ParsingException("Diese Visitenkarte existiert nicht.\nNeue Karten können mit /createcard hinzugefügt werden.");
|
throw new ParsingException("Diese Visitenkarte existiert nicht.\nNeue Karten können mit /createcard hinzugefügt werden.");
|
||||||
}
|
}
|
||||||
|
@ -357,12 +356,13 @@ public class BusinessCards implements Module {
|
||||||
.setAction(c -> {
|
.setAction(c -> {
|
||||||
String help = "Synopsis: /showcards";
|
String help = "Synopsis: /showcards";
|
||||||
List<String> args = StringTools.tokenize(c.getParameter());
|
List<String> args = StringTools.tokenize(c.getParameter());
|
||||||
if (args.size() != 0) {
|
if (!args.isEmpty()) {
|
||||||
c.getSender().send(help);
|
c.getSender().send(help);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
List<BusinessCardsCard> tmp = BusinessCardsCard.getByUserid(c.getMessage().getFrom().getId().intValue());
|
List<BusinessCardsCard> tmp = BusinessCardsCard.getByUserid(
|
||||||
|
c.getMessage().getFrom().getId());
|
||||||
if (tmp == null || tmp.isEmpty()) {
|
if (tmp == null || tmp.isEmpty()) {
|
||||||
c.getSender().send("Keine Visitenkarten gefunden.");
|
c.getSender().send("Keine Visitenkarten gefunden.");
|
||||||
return;
|
return;
|
||||||
|
@ -435,7 +435,7 @@ public class BusinessCards implements Module {
|
||||||
.setAction(c -> {
|
.setAction(c -> {
|
||||||
String help = "Synopsis: /showcardfields";
|
String help = "Synopsis: /showcardfields";
|
||||||
List<String> args = StringTools.tokenize(c.getParameter());
|
List<String> args = StringTools.tokenize(c.getParameter());
|
||||||
if (args.size() != 0) {
|
if (!args.isEmpty()) {
|
||||||
c.getSender().send(help);
|
c.getSender().send(help);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -490,7 +490,7 @@ public class BusinessCards implements Module {
|
||||||
throw new NurseException("Es wurde kein Feld mit diesem Namen gefunden.");
|
throw new NurseException("Es wurde kein Feld mit diesem Namen gefunden.");
|
||||||
|
|
||||||
if ("delete".equals(command)) {
|
if ("delete".equals(command)) {
|
||||||
field.getAll(BusinessCardsEntry.class).forEach(e -> e.delete());
|
field.getAll(BusinessCardsEntry.class).forEach(Model::delete);
|
||||||
field.delete();
|
field.delete();
|
||||||
c.getSender().send("Das Feld " + name + " wurde erfogreich mit allen Abhängigkiten gelöscht.");
|
c.getSender().send("Das Feld " + name + " wurde erfogreich mit allen Abhängigkiten gelöscht.");
|
||||||
} else if ("set".equals(command)) {
|
} else if ("set".equals(command)) {
|
||||||
|
@ -523,7 +523,6 @@ public class BusinessCards implements Module {
|
||||||
} catch (NurseException e) {
|
} catch (NurseException e) {
|
||||||
Base.rollbackTransaction();
|
Base.rollbackTransaction();
|
||||||
c.getSender().send(help + "\n\n" + e.getMessage());
|
c.getSender().send(help + "\n\n" + e.getMessage());
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,16 +1,16 @@
|
||||||
package asylum.nursebot.modules;
|
package asylum.nursebot.modules;
|
||||||
|
|
||||||
import asylum.nursebot.NurseNoakes;
|
import java.util.LinkedList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import com.google.inject.Inject;
|
||||||
|
|
||||||
import asylum.nursebot.loader.AutoModule;
|
import asylum.nursebot.loader.AutoModule;
|
||||||
import asylum.nursebot.modules.buzzwords.Buzzword;
|
import asylum.nursebot.modules.buzzwords.Buzzword;
|
||||||
import asylum.nursebot.objects.Module;
|
import asylum.nursebot.objects.Module;
|
||||||
import asylum.nursebot.objects.ModuleType;
|
import asylum.nursebot.objects.ModuleType;
|
||||||
import asylum.nursebot.semantics.SemanticsHandler;
|
import asylum.nursebot.semantics.SemanticsHandler;
|
||||||
import asylum.nursebot.semantics.WakeWordType;
|
import asylum.nursebot.semantics.WakeWordType;
|
||||||
import com.google.inject.Inject;
|
|
||||||
|
|
||||||
import java.util.LinkedList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@AutoModule(load=true)
|
@AutoModule(load=true)
|
||||||
public class Buzzwords implements Module {
|
public class Buzzwords implements Module {
|
||||||
|
|
|
@ -4,6 +4,7 @@ import java.time.Duration;
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
import java.util.concurrent.ThreadLocalRandom;
|
||||||
|
|
||||||
import com.google.inject.Inject;
|
import com.google.inject.Inject;
|
||||||
|
|
||||||
|
@ -22,9 +23,9 @@ import org.telegram.telegrambots.meta.exceptions.TelegramApiException;
|
||||||
|
|
||||||
@AutoModule(load=true)
|
@AutoModule(load=true)
|
||||||
public class ConversationStarter implements Module {
|
public class ConversationStarter implements Module {
|
||||||
private final Duration SLEEP_TIME = Duration.ofSeconds(30);
|
private static final Duration SLEEP_TIME = Duration.ofSeconds(30);
|
||||||
private final Duration IDLE_TIME = Duration.ofHours(7);
|
private static final Duration IDLE_TIME = Duration.ofHours(7);
|
||||||
private final String[] STARTERS = {
|
private static final String[] STARTERS = {
|
||||||
"Mir fällt gerade auf: Alles, was ich jemals sagen werde, ist durch mein Programm vorherbestimmt.\n" +
|
"Mir fällt gerade auf: Alles, was ich jemals sagen werde, ist durch mein Programm vorherbestimmt.\n" +
|
||||||
"Ob sich wohl die ganze Welt so verhält?",
|
"Ob sich wohl die ganze Welt so verhält?",
|
||||||
|
|
||||||
|
@ -214,7 +215,7 @@ public class ConversationStarter implements Module {
|
||||||
Long chatid = c.getMessage().getChat().getId();
|
Long chatid = c.getMessage().getChat().getId();
|
||||||
if (!lastMessages.containsKey(chatid)) {
|
if (!lastMessages.containsKey(chatid)) {
|
||||||
new Thread(() -> {
|
new Thread(() -> {
|
||||||
Random random = new Random();
|
Random random = ThreadLocalRandom.current();
|
||||||
while(true) {
|
while(true) {
|
||||||
ThreadHelper.ignore(InterruptedException.class, () -> Thread.sleep(SLEEP_TIME.toMillis()));
|
ThreadHelper.ignore(InterruptedException.class, () -> Thread.sleep(SLEEP_TIME.toMillis()));
|
||||||
if (!active)
|
if (!active)
|
||||||
|
|
|
@ -135,7 +135,7 @@ public class Dices implements Module {
|
||||||
throw new NurseException("Synopsis: /dice {[ANZAHL.]WÜRFEL}");
|
throw new NurseException("Synopsis: /dice {[ANZAHL.]WÜRFEL}");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (dices.size() == 0)
|
if (dices.isEmpty())
|
||||||
throw new NurseException("Mathematisch gesehen gibt es für das Ergebnis nur eine Möglichkeit, wenn man mit gar keinen Würfel spielt. Nämlich das da:");
|
throw new NurseException("Mathematisch gesehen gibt es für das Ergebnis nur eine Möglichkeit, wenn man mit gar keinen Würfel spielt. Nämlich das da:");
|
||||||
if (dices.size() > 10)
|
if (dices.size() > 10)
|
||||||
throw new NurseException("*stolpert, und verteilt " + dices.size() + " Würfel auf dem Boden*\nOh nein... \uD83D\uDE1E");
|
throw new NurseException("*stolpert, und verteilt " + dices.size() + " Würfel auf dem Boden*\nOh nein... \uD83D\uDE1E");
|
||||||
|
@ -165,7 +165,8 @@ public class Dices implements Module {
|
||||||
builder.append(", ");
|
builder.append(", ");
|
||||||
}
|
}
|
||||||
dice.roll();
|
dice.roll();
|
||||||
builder.append(dice.display() + " (" + dice.toString() + ")");
|
builder.append(dice.display()).append(" (").append(dice.toString())
|
||||||
|
.append(")");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -191,7 +192,7 @@ public class Dices implements Module {
|
||||||
|
|
||||||
tokens.remove(0);
|
tokens.remove(0);
|
||||||
|
|
||||||
if (tokens.size() > 0) {
|
if (!tokens.isEmpty()) {
|
||||||
Number[] parameters = new Number[tokens.size()];
|
Number[] parameters = new Number[tokens.size()];
|
||||||
for (int i = 0; i < tokens.size(); i++) {
|
for (int i = 0; i < tokens.size(); i++) {
|
||||||
String tmp = tokens.get(i);
|
String tmp = tokens.get(i);
|
||||||
|
|
|
@ -2,6 +2,7 @@ package asylum.nursebot.modules;
|
||||||
|
|
||||||
import java.util.Calendar;
|
import java.util.Calendar;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
import java.util.concurrent.ThreadLocalRandom;
|
||||||
|
|
||||||
import com.google.inject.Inject;
|
import com.google.inject.Inject;
|
||||||
|
|
||||||
|
@ -109,7 +110,7 @@ public class Eastereggs implements Module {
|
||||||
"Gern geschehen.", "Hab ich gerne gemacht."
|
"Gern geschehen.", "Hab ich gerne gemacht."
|
||||||
};
|
};
|
||||||
|
|
||||||
Random random = new Random();
|
Random random = ThreadLocalRandom.current();
|
||||||
|
|
||||||
c.getSender().reply(replys[random.nextInt(replys.length)], c.getMessage());
|
c.getSender().reply(replys[random.nextInt(replys.length)], c.getMessage());
|
||||||
}));
|
}));
|
||||||
|
@ -126,7 +127,7 @@ public class Eastereggs implements Module {
|
||||||
"Heast!"
|
"Heast!"
|
||||||
};
|
};
|
||||||
|
|
||||||
Random random = new Random();
|
Random random = ThreadLocalRandom.current();
|
||||||
|
|
||||||
c.getSender().reply(replys[random.nextInt(replys.length)], c.getMessage());
|
c.getSender().reply(replys[random.nextInt(replys.length)], c.getMessage());
|
||||||
}));
|
}));
|
||||||
|
@ -152,7 +153,7 @@ public class Eastereggs implements Module {
|
||||||
if (!(hour < 2 || hour > 21))
|
if (!(hour < 2 || hour > 21))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
Random random = new Random();
|
Random random = ThreadLocalRandom.current();
|
||||||
c.getSender().reply(replys[random.nextInt(replys.length)], c.getMessage());
|
c.getSender().reply(replys[random.nextInt(replys.length)], c.getMessage());
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
|
@ -127,7 +127,7 @@ public class PrivateNotifier implements Module {
|
||||||
if (!chats.contains(user.getId())) {
|
if (!chats.contains(user.getId())) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
chats.remove(new Long(user.getId()));
|
chats.remove(user.getId());
|
||||||
PrivateNotifierChat chat = PrivateNotifierChat.find(user.getId());
|
PrivateNotifierChat chat = PrivateNotifierChat.find(user.getId());
|
||||||
chat.delete();
|
chat.delete();
|
||||||
}
|
}
|
||||||
|
|
|
@ -80,7 +80,7 @@ public class RandomHugs implements Module {
|
||||||
|
|
||||||
if (properties.next.compareTo(Calendar.getInstance()) < 0) {
|
if (properties.next.compareTo(Calendar.getInstance()) < 0) {
|
||||||
List<User> users = new LinkedList<User>(properties.users.values());
|
List<User> users = new LinkedList<User>(properties.users.values());
|
||||||
if (users.size() != 0) {
|
if (!users.isEmpty()) {
|
||||||
User user = users.get(random.nextInt(users.size()));
|
User user = users.get(random.nextInt(users.size()));
|
||||||
ThreadHelper.ignore(
|
ThreadHelper.ignore(
|
||||||
TelegramApiException.class, () -> sender.mention(user, "\\*random hug\\*"));
|
TelegramApiException.class, () -> sender.mention(user, "\\*random hug\\*"));
|
||||||
|
|
|
@ -129,8 +129,6 @@ public class Statistics implements Module {
|
||||||
|
|
||||||
chart.setSize(600, 450);
|
chart.setSize(600, 450);
|
||||||
chart.setTitle(title, Color.WHITE, 14);
|
chart.setTitle(title, Color.WHITE, 14);
|
||||||
//chart.addHorizontalRangeMarker(40, 60, Color.newColor(Color.RED, 30));
|
|
||||||
//chart.addVerticalRangeMarker(70, 90, Color.newColor(Color.GREEN, 30));
|
|
||||||
|
|
||||||
double xgrid = 100 / (double) (xLabels.length - 1);
|
double xgrid = 100 / (double) (xLabels.length - 1);
|
||||||
while (xgrid < 10)
|
while (xgrid < 10)
|
||||||
|
|
|
@ -73,7 +73,7 @@ public class UserDetails implements Module {
|
||||||
c.getSender().reply(synopsis, c.getMessage());
|
c.getSender().reply(synopsis, c.getMessage());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (users.size() < 1) {
|
if (users.isEmpty()) {
|
||||||
c.getSender().reply("Der User wurde nicht gefunden. Möglicherweise ist er noch nicht vom UserLookup erfasst.", c.getMessage());
|
c.getSender().reply("Der User wurde nicht gefunden. Möglicherweise ist er noch nicht vom UserLookup erfasst.", c.getMessage());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -116,7 +116,7 @@ public class UserDetails implements Module {
|
||||||
c.getSender().reply("Bitte nicht so viele auf einmal.", c.getMessage());
|
c.getSender().reply("Bitte nicht so viele auf einmal.", c.getMessage());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (users.size() == 0) {
|
if (users.isEmpty()) {
|
||||||
c.getSender().reply("Diese User kenne ich nicht.", c.getMessage());
|
c.getSender().reply("Diese User kenne ich nicht.", c.getMessage());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -141,7 +141,7 @@ public class UserDetails implements Module {
|
||||||
okay = true;
|
okay = true;
|
||||||
|
|
||||||
builder.append("von ");
|
builder.append("von ");
|
||||||
if (infoAuthor.getId() == author.getId()) {
|
if (infoAuthor.getId().equals(author.getId())) {
|
||||||
builder.append("dir");
|
builder.append("dir");
|
||||||
} else {
|
} else {
|
||||||
builder.append(infoAuthor.getFirstName());
|
builder.append(infoAuthor.getFirstName());
|
||||||
|
|
|
@ -24,7 +24,7 @@ public enum Privacy {
|
||||||
public static Privacy fromString(String name) {
|
public static Privacy fromString(String name) {
|
||||||
name = name.toLowerCase().replace('-', '_');
|
name = name.toLowerCase().replace('-', '_');
|
||||||
for (Privacy privacy : Privacy.values()) {
|
for (Privacy privacy : Privacy.values()) {
|
||||||
if (privacy.name().toLowerCase().equals(name))
|
if (privacy.name().equalsIgnoreCase(name))
|
||||||
return privacy;
|
return privacy;
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
|
|
|
@ -2,6 +2,7 @@ package asylum.nursebot.modules.buzzwords;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
import java.util.concurrent.ThreadLocalRandom;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import asylum.nursebot.objects.Locality;
|
import asylum.nursebot.objects.Locality;
|
||||||
|
@ -100,7 +101,8 @@ public class Buzzword extends SemanticInterpreter implements SemanticAction {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void action(SemanticContext context) {
|
public void action(SemanticContext context) {
|
||||||
Random random = new Random();
|
|
||||||
|
Random random = ThreadLocalRandom.current();
|
||||||
|
|
||||||
if (random.nextDouble() >= chance)
|
if (random.nextDouble() >= chance)
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -3,6 +3,6 @@ package asylum.nursebot.modules.dices;
|
||||||
public class D12 extends StandardDice {
|
public class D12 extends StandardDice {
|
||||||
|
|
||||||
public D12() {
|
public D12() {
|
||||||
super(5);
|
super(12);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@ public class D6 extends StandardDice {
|
||||||
super(6);
|
super(6);
|
||||||
}
|
}
|
||||||
|
|
||||||
private final String[] images = {"⚀", "⚁", "⚂", "⚃", "⚄", "⚅"};
|
private static final String[] images = {"⚀", "⚁", "⚂", "⚃", "⚄", "⚅"};
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String display() {
|
public String display() {
|
||||||
|
|
|
@ -48,7 +48,7 @@ public class Connector {
|
||||||
logger.exception(e1);
|
logger.exception(e1);
|
||||||
try {
|
try {
|
||||||
Base.close();
|
Base.close();
|
||||||
} catch (Exception e2) {
|
} catch (Exception ignored) {
|
||||||
}
|
}
|
||||||
connect();
|
connect();
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,7 +22,7 @@ public class NurseModule extends Model implements Selfbuilding {
|
||||||
|
|
||||||
static public NurseModule byName(String name) {
|
static public NurseModule byName(String name) {
|
||||||
List<NurseModule> list = NurseModule.where("module = ?", name);
|
List<NurseModule> list = NurseModule.where("module = ?", name);
|
||||||
if (list == null || list.size() == 0)
|
if (list == null || list.isEmpty())
|
||||||
return null;
|
return null;
|
||||||
return list.get(0);
|
return list.get(0);
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,7 +22,7 @@ public class PrivateNotifierChat extends Model implements Selfbuilding {
|
||||||
|
|
||||||
public static PrivateNotifierChat find(long userid) {
|
public static PrivateNotifierChat find(long userid) {
|
||||||
List<PrivateNotifierChat> list = NurseModule.where("userid = ?", userid);
|
List<PrivateNotifierChat> list = NurseModule.where("userid = ?", userid);
|
||||||
if (list == null || list.size() == 0)
|
if (list == null || list.isEmpty())
|
||||||
return null;
|
return null;
|
||||||
return list.get(0);
|
return list.get(0);
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,6 +9,9 @@ public abstract class Logger {
|
||||||
public final static int EXCEPTION = 3;
|
public final static int EXCEPTION = 3;
|
||||||
public final static int CRITICAL = 4;
|
public final static int CRITICAL = 4;
|
||||||
|
|
||||||
|
public static final String END_ANSI = "\033[0m";
|
||||||
|
public static final String BLINK = "\033[1m";
|
||||||
|
|
||||||
protected final static int DEFAULT_VERBOSITY = INFO;
|
protected final static int DEFAULT_VERBOSITY = INFO;
|
||||||
|
|
||||||
protected enum LogColor {
|
protected enum LogColor {
|
||||||
|
@ -25,11 +28,11 @@ public abstract class Logger {
|
||||||
}
|
}
|
||||||
|
|
||||||
public String endANSI() {
|
public String endANSI() {
|
||||||
return "\033[0m";
|
return END_ANSI;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String blink() {
|
public String blink() {
|
||||||
return "\033[1m";
|
return BLINK;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue