MittweidaForFuture/src/main/java/CORE/Core.java
2021-03-18 10:18:13 +01:00

177 lines
4.9 KiB
Java

package CORE;
import Manager.ChatManager;
import Manager.UserManager;
import Modules.*;
import Modules.Module;
import Utility.User.MyUser;
import Utility.jsonUtils;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.telegram.telegrambots.bots.TelegramLongPollingBot;
import org.telegram.telegrambots.meta.api.methods.send.SendMessage;
import org.telegram.telegrambots.meta.api.methods.updatingmessages.EditMessageText;
import org.telegram.telegrambots.meta.api.objects.Update;
import org.telegram.telegrambots.meta.api.objects.User;
import java.util.*;
public class Core extends TelegramLongPollingBot {
private static final Logger log = LoggerFactory.getLogger(Core.class);
public static final int MUTETIMER = 60; //MINUTES
public static final long GUEST_TIME = 1000 * 60 * 60; // 1H
public static final int SLOWMODETIMER = 35; //seconds
public static long ADMIN_CHAT_ID;
public static JSONArray OPEN_CHATS;
public static String GUEST_CHAT_JOIN_LINK ;
public static String TEAM_NAME;
public static boolean NO_BOT_RIGHTS;
private static String BOT_TOKEN;
private static String BOT_USERNAME;
public static HashMap<Long, MyUser> userMap;
private List<Module> modules;
private Map<Long, MyUser> open_requests;
private Set<Long> watchingChats;
public Core(){
log.info("load config");
JSONObject config = (JSONObject) jsonUtils.loadJson("config.json").get(0);
ADMIN_CHAT_ID = (long) config.get("masterUserId");
OPEN_CHATS = (JSONArray) config.get("openChats");
GUEST_CHAT_JOIN_LINK = (String) config.get("guestChatJoinLink");
TEAM_NAME = (String) config.get("teamname");
NO_BOT_RIGHTS = (Boolean) config.get("no_bot_rights_option");
BOT_TOKEN = (String) config.get("botToken");
BOT_USERNAME = (String) config.get("botUserName");
userMap = new HashMap<>();
open_requests = new HashMap<>();
watchingChats = ChatManager.loadWatch();
UserManager.loadUserList();
log.info("init all modules");
modules = new ArrayList<>();
modules.add(new AdminMenue(this));
modules.add(new BasicModule(this));
modules.add(new ModCommands(this));
modules.add(new SlowMode(this));
modules.add(new UserMenue(this));
modules.add(new Welcome(this));
log.info("done");
}
/*----------Help Methods to send and edit messages----------*/
public void send_message(SendMessage message) {
log.debug("Send message " + message);
try {
execute(message);
} catch (Exception e) {
e.printStackTrace();
}
}
public void edit_message(EditMessageText message) {
log.debug("Send edit message " + message);
try {
execute(message);
} catch (Exception e) {
e.printStackTrace();
}
}
public void send_message_toadmins(SendMessage message) {
log.debug("Send message to admins" + message);
List<MyUser> admin_list = UserManager.buildAdminList();
for (MyUser admin : admin_list) {
long admin_id = admin.getId();
message.setChatId(admin_id);
send_message(message);
}
}
/*------------------------- Other Mehtods ------------------------------------*/
public static String getUserAsMention(User user){
if (user instanceof MyUser)
return ((MyUser)user).getUserName();
String userName;
if (user.getUserName() != null){
userName = user.getUserName();
} else if (user.getFirstName() != null){
userName = user.getFirstName();
} else if (user.getLastName() != null){
userName = user.getLastName();
} else {
userName = "StealthUser";
}
userName = "<a href=\"tg://user?id=" + user.getId() + "\">" + userName + "</a>";
return userName;
}
public HashMap<Long, MyUser> getUserMap() {
return userMap;
}
public Map<Long, MyUser> getOpen_requests() {
return open_requests;
}
public Set<Long> getWatchingChats() {
return watchingChats;
}
public void saveWhatchingChats(){
ChatManager.saveWatch(watchingChats);
}
/*-------------------------------- BOT FUNCTIONS -------------------------------------------*/
@Override
public void onUpdateReceived(Update update) {
log.trace("Got an Update: " + update.toString());
//Check if user is blocked
if (update.hasMessage() && UserManager.checkBlacklist(update.getMessage().getFrom().getId())) {
return;
}
for (Module x : modules)
x.execute(update);
}
@Override
public String getBotUsername() {
return BOT_USERNAME;
}
@Override
public String getBotToken() {
return BOT_TOKEN;
}
}