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 userMap; private List modules; private Map open_requests; private Set 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 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 = "" + userName + ""; return userName; } public HashMap getUserMap() { return userMap; } public Map getOpen_requests() { return open_requests; } public Set 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; } }