177 lines
4.9 KiB
Java
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;
|
|
}
|
|
}
|