142 lines
4.5 KiB
Java
142 lines
4.5 KiB
Java
package de.mrbesen.telegram.objects;
|
|
|
|
import java.io.IOException;
|
|
|
|
import org.json.JSONObject;
|
|
|
|
import de.mrbesen.telegram.AsyncHandler.Task;
|
|
import de.mrbesen.telegram.TelegramAPI;
|
|
|
|
public class TMessage extends JSONBased {
|
|
|
|
private int message_id;
|
|
private TUser from = null;//optional
|
|
private long date = -1;
|
|
private TUser forward_from = null; //optional
|
|
private String text = null;//optional
|
|
private long chatid = 0;
|
|
|
|
protected TelegramAPI api;
|
|
|
|
public void sendTo(TUser u) {
|
|
//if this message already exists forward, if not send directly.
|
|
throw new RuntimeException("not implemented");
|
|
}
|
|
|
|
public boolean reply(String msg, TReplyMarkup rm) {
|
|
if(from == null) {
|
|
throw new RuntimeException("no from defined!");
|
|
} else {
|
|
return TUser.sendMessage(api, chatid != 0 ? chatid : from.getID(), msg, rm, message_id, false, null);
|
|
}
|
|
// try {
|
|
// return api.request("sendMessage", "chat_id=" + from.getID() + "&text=" + msg + "&reply_to_message_id=" + message_id ).getBoolean("ok") ;
|
|
// } catch (IOException | NullPointerException e) {
|
|
// e.printStackTrace();
|
|
// return false;
|
|
// }
|
|
}
|
|
public boolean reply(String msg) {
|
|
return reply(msg, null);
|
|
}
|
|
|
|
public TMessage forward(TUser us) {
|
|
return forward(api, us.getID(), this);
|
|
}
|
|
public static TMessage forward(TelegramAPI api, long userid, TMessage tmsg) {
|
|
try {
|
|
String fro = String.valueOf(tmsg.forward_from == null ? tmsg.from.getID() : tmsg.forward_from.getID());
|
|
return new TMessage(api.request("forwardMessage", "chat_id=" + userid + "&from_chat_id=" + fro + "&message_id=" + tmsg.message_id).getJSONObject("result"), api);
|
|
} catch (IOException | NullPointerException e) {
|
|
e.printStackTrace();
|
|
}
|
|
return null;
|
|
}
|
|
|
|
public static void forwardAsync(TelegramAPI api, long userid, TMessage tmsg) {
|
|
String fro = String.valueOf(tmsg.forward_from == null ? tmsg.from.getID() : tmsg.forward_from.getID());
|
|
api.request(new Task("forwardMessage", "chat_id=" + userid + "&from_chat_id=" + fro + "&message_id=" + tmsg.message_id));
|
|
}
|
|
|
|
public TMessage(JSONObject json, TelegramAPI api) {
|
|
super(json);
|
|
this.api = api;
|
|
message_id = json.getInt("message_id");
|
|
date = json.getLong("date");
|
|
chatid = ((JSONObject) get(Member.chat)).getLong("id");
|
|
if(json.has("from"))
|
|
from = api.getUser(json.getJSONObject("from"));
|
|
|
|
if(json.has("forward_from"))
|
|
forward_from = api.getUser(json.getJSONObject("forward_from"));
|
|
|
|
if(json.has("text") )
|
|
text = json.getString("text");
|
|
|
|
allowedmembers = new Member[] {Member.forward_from_message_id, Member.forward_signature, Member.forward_date, Member.reply_to_message, Member.edit_date, Member.media_group_id, Member.author_signature, Member.author_signature, Member.audio, Member.document, Member.game, Member.photo, Member.sticker, Member.video, Member.voice, Member.video_note, Member.caption, Member.contact, Member.location, Member.venue, Member.new_chat_members, Member.left_chat_members, Member.new_chat_title, Member.new_chat_photo, Member.delete_chat_photo, Member.group_chat_created, Member.supergroup_chat_created, Member.channel_chat_created, Member.migrate_from_chat_id, Member.migrate_to_chat_id, Member.pinned_message, Member.invoice, Member.successful_payment, Member.connected_website, Member.chat};
|
|
}
|
|
|
|
public long getChatID() {
|
|
return chatid;
|
|
}
|
|
|
|
public TUser getFrom() {
|
|
return from;
|
|
}
|
|
|
|
public String getText() {
|
|
return text;
|
|
}
|
|
|
|
public long getDate() {
|
|
return date;
|
|
}
|
|
|
|
public TUser getForward_from() {
|
|
return forward_from;
|
|
}
|
|
|
|
public int getMessageID() {
|
|
return message_id;
|
|
}
|
|
|
|
/**
|
|
* Get the FileID if a file is attached to this message. If More than one File is attached to this message only one file id is returned
|
|
* @return
|
|
*/
|
|
public String getFileID() {
|
|
try {
|
|
JSONObject doc;
|
|
if(has(JSONBased.Member.document))
|
|
doc = ((JSONObject) get(JSONBased.Member.document));
|
|
else if(has(JSONBased.Member.video))
|
|
doc = ((JSONObject) get(JSONBased.Member.video));
|
|
else if(has(JSONBased.Member.audio))
|
|
doc = ((JSONObject) get(JSONBased.Member.audio));
|
|
else return null;
|
|
|
|
return doc.getString("file_id");
|
|
} catch (Throwable t) {
|
|
t.printStackTrace();
|
|
}
|
|
return null;
|
|
}
|
|
|
|
public static void delete(TelegramAPI api, long chatid, int msgid) {
|
|
delete(api, chatid, msgid, false);
|
|
}
|
|
|
|
public static void delete(TelegramAPI api, long chatid, int msgid, boolean async) {
|
|
String q = "chat_id=" + chatid + "&message_id=" + msgid;
|
|
if(async) {
|
|
api.requestAsync("deleteMessage", q);
|
|
} else {
|
|
try {
|
|
api.request("deleteMessage", q);
|
|
} catch (IOException e) {
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
}
|
|
}
|