package de.mrbesen.telegram.objects; import java.io.IOException; import java.net.URLEncoder; import org.json.JSONObject; import de.mrbesen.telegram.TelegramAPI; public class TUser { private int id; private String uname;//optional private String firstname; private String lastname;//optional private String langcode; // optional private boolean isBot = false; private TelegramAPI api = null; TUser(int chatid, String uname, TelegramAPI api) { this.id = chatid; this.uname = uname; this.api = api; } public TUser(int chatid, TelegramAPI api) { this.api = api; this.id = chatid; } public TUser(JSONObject o, TelegramAPI api) { this.api = api; firstname = o.getString("first_name"); isBot = o.getBoolean("is_bot"); id = o.getInt("id"); if(o.has("last_name")) lastname = o.getString("last_name"); if(o.has("username")) uname = o.getString("username"); if(o.has("language_code")) langcode = o.getString("language_code"); } public String getFirstName() { return firstname; } public String getLastName() { return lastname; } public String getLangcode() { return langcode; } public boolean isBot() { return isBot; } public int getID() { return id; } public String getName() { return uname; } public void sendHelpPage() { sendMessage(api.getHelpMessage()); } public boolean sendMessage(String text) { return sendMessage(text, null); } public boolean sendMessage(String text, TReplyMarkup rm) { return sendMessage(text, rm, -1); } public boolean sendMessage(String text, TReplyMarkup rm, int reply_to_msg) { return sendMessage(api, id, text, rm, reply_to_msg); } /** * * @param api * @param userid * @param text * @param rm null = no markup * @param reply_to_msg 0 = no reply * @return */ public static boolean sendMessage(TelegramAPI api, int userid, String text, TReplyMarkup rm, int reply_to_msg) { if(api == null) { System.err.println("api == null!"); return false; } String replyto = (reply_to_msg > 0 ? "&reply_to_message_id=" +reply_to_msg : ""); try { String replymarkup = parseRPMU(rm); return api.request("sendMessage", "chat_id=" + userid + "&text=" + URLEncoder.encode(text, "UTF-8") + replymarkup + replyto).getBoolean("ok"); } catch (IOException e) { e.printStackTrace(); } return false; } private static String parseRPMU(TReplyMarkup rply) throws IOException { return (rply == null ? "" : "&reply_markup=" + URLEncoder.encode(rply.toJSONString(), "UTF-8")); } public void sendStatus(Status status) { try { api.request("sendChatAction", "chat_id="+id+"&action=" + status.getAPIName()); } catch (Exception e) { System.err.println("Failed to send status."); } } public boolean sendImage(String caption, String url) { return sendImage(api, id, caption, url, null); } public static boolean sendImage(TelegramAPI api, int userid, String caption, String url, TReplyMarkup rply) { try { String cap = ""; if(caption != null) { if(!caption.isEmpty()) cap = "&caption=" + caption; } api.request("sendPhoto", "chat_id=" + userid + parseRPMU(rply) + cap + "&photo=" + url); } catch (IOException e) { e.printStackTrace(); return false; } return true; } public boolean sendAnimation(String caption, String url) { return sendAnimation(api, id, caption, url, null); } public static boolean sendAnimation(TelegramAPI api, int userid, String caption, String url, TReplyMarkup rply) { try { String cap = ""; if(caption != null) { if(!caption.isEmpty()) cap = "&caption=" + caption; } api.request("sendAnimation", "chat_id=" + userid + parseRPMU(rply) + cap + "&animation=" + url); } catch (IOException e) { e.printStackTrace(); return false; } return true; } @Override public boolean equals(Object user) { if(user instanceof TUser) { return ((TUser) user).getID() == id; } return false; } public enum Status { Typing, Upload_Photo, Record_Video, Upload_Video, Record_Audio, Upload_Audio, Upload_Document, Find_Location, Record_Video_Note, Upload_Video_Note; String getAPIName() { return name().toLowerCase(); } } }