feedback callback
This commit is contained in:
parent
e2eb71a1a6
commit
7d1e478260
|
@ -69,7 +69,7 @@ public class TelegramAPI implements Runnable {
|
||||||
private CommandManager cmdmgr = new CommandManager(this);
|
private CommandManager cmdmgr = new CommandManager(this);
|
||||||
private EventManager evntmgr = new EventManager();
|
private EventManager evntmgr = new EventManager();
|
||||||
|
|
||||||
private FeedbackCommand feedbackCmd;
|
private FeedbackCommand feedbackCmd = null;
|
||||||
|
|
||||||
//async
|
//async
|
||||||
private AsyncHandler async = null;
|
private AsyncHandler async = null;
|
||||||
|
@ -291,6 +291,11 @@ public class TelegramAPI implements Runnable {
|
||||||
async.enque(t);
|
async.enque(t);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setFeedbackCallback(Function<TUser, String> clb) {
|
||||||
|
if(!disableFeedback && feedbackCmd != null)
|
||||||
|
feedbackCmd.setFeedbackCallback(clb);
|
||||||
|
}
|
||||||
|
|
||||||
public TFile getFile(final String fileid) throws IOException {
|
public TFile getFile(final String fileid) throws IOException {
|
||||||
JSONObject jfile = request("getFile", "file_id=" + fileid);
|
JSONObject jfile = request("getFile", "file_id=" + fileid);
|
||||||
return new TFile(jfile.getJSONObject("result"));
|
return new TFile(jfile.getJSONObject("result"));
|
||||||
|
|
|
@ -8,11 +8,13 @@ import de.mrbesen.telegram.event.events.UserSendMessageEvent;
|
||||||
import de.mrbesen.telegram.objects.TInlineKeyboardMarkup;
|
import de.mrbesen.telegram.objects.TInlineKeyboardMarkup;
|
||||||
import de.mrbesen.telegram.objects.TMessage;
|
import de.mrbesen.telegram.objects.TMessage;
|
||||||
import de.mrbesen.telegram.objects.TUser;
|
import de.mrbesen.telegram.objects.TUser;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.TreeMap;
|
import java.util.TreeMap;
|
||||||
|
import java.util.function.Function;
|
||||||
|
|
||||||
public class FeedbackCommand implements JSONCommandHandler {
|
public class FeedbackCommand implements JSONCommandHandler {
|
||||||
|
|
||||||
|
@ -22,6 +24,8 @@ public class FeedbackCommand implements JSONCommandHandler {
|
||||||
protected final TelegramAPI api;
|
protected final TelegramAPI api;
|
||||||
protected final List<Long> admins;
|
protected final List<Long> admins;
|
||||||
protected final static String CANCELFEEDBACK = "cancelfeedback", REPLYFEEDBACK = "replyFeedback ";
|
protected final static String CANCELFEEDBACK = "cancelfeedback", REPLYFEEDBACK = "replyFeedback ";
|
||||||
|
@Setter
|
||||||
|
private Function<TUser, String> feedbackCallback = null;
|
||||||
|
|
||||||
|
|
||||||
public FeedbackCommand(TelegramAPI api, List<Long> admins) {
|
public FeedbackCommand(TelegramAPI api, List<Long> admins) {
|
||||||
|
@ -54,19 +58,19 @@ public class FeedbackCommand implements JSONCommandHandler {
|
||||||
public boolean onMsg(UserSendMessageEvent e) {
|
public boolean onMsg(UserSendMessageEvent e) {
|
||||||
TUser user = e.getUser();
|
TUser user = e.getUser();
|
||||||
TMessage msg = e.getMessage();
|
TMessage msg = e.getMessage();
|
||||||
if (awaitingFeedback.containsKey(user.getID())) {
|
if (awaitingFeedback.containsKey(user.getID())) { //user send a feedback
|
||||||
removeMsg(user.getID(), e.getMessage());
|
removeMsg(user.getID(), e.getMessage());
|
||||||
if(isFeedback(msg.getText())) {
|
if(isFeedback(msg.getText())) {
|
||||||
//fwd to admins
|
//fwd to admins
|
||||||
admins.forEach(a -> TMessage.forwardAsync(api, a, msg));
|
admins.forEach(a -> TMessage.forwardAsync(api, a, msg));
|
||||||
|
|
||||||
MessageBuilder mb = createInfo(user, msg.getMessageID());
|
MessageBuilder mb = createInfo(user, msg.getMessageID(), true);
|
||||||
admins.forEach(a -> api.sendMessage(mb.setReciver(a).build()));
|
admins.forEach(a -> api.sendMessage(mb.setReciver(a).build()));
|
||||||
} else {
|
} else {
|
||||||
System.out.println("feedback omitted: " + msg.getText());
|
System.out.println("feedback omitted: " + msg.getText());
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else { //reply to a message
|
||||||
Long[] rplymsg = awnser.remove(user.getID());
|
Long[] rplymsg = awnser.remove(user.getID());
|
||||||
if(rplymsg != null) {
|
if(rplymsg != null) {
|
||||||
if(admins.contains(user.getID())) {
|
if(admins.contains(user.getID())) {
|
||||||
|
@ -86,7 +90,7 @@ public class FeedbackCommand implements JSONCommandHandler {
|
||||||
TMessage.forwardAsync(api, rplymsg[0], msg);
|
TMessage.forwardAsync(api, rplymsg[0], msg);
|
||||||
|
|
||||||
//send info
|
//send info
|
||||||
MessageBuilder mb = createInfo(user, msg.getMessageID());
|
MessageBuilder mb = createInfo(user, msg.getMessageID(), false);
|
||||||
api.sendMessage(mb.setReciver(rplymsg[0]).setReplyTo(Math.toIntExact(rplymsg[1])).build());
|
api.sendMessage(mb.setReciver(rplymsg[0]).setReplyTo(Math.toIntExact(rplymsg[1])).build());
|
||||||
}
|
}
|
||||||
System.out.println("Feedback reply from " + user.getID() + " to " + rplymsg[0] + ":" + rplymsg[1] + " send.");
|
System.out.println("Feedback reply from " + user.getID() + " to " + rplymsg[0] + ":" + rplymsg[1] + " send.");
|
||||||
|
@ -96,12 +100,22 @@ public class FeedbackCommand implements JSONCommandHandler {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected MessageBuilder createInfo(TUser u, int msgid) {
|
protected MessageBuilder createInfo(TUser u, int msgid, boolean firstmsg) {
|
||||||
String info = "Feedbackinfo:\n" + "userid: " + u.getID() + "\nusername: " + u.getName() + "\nfullname: " + u.getFirstName() + ' ' + u.getLastName();
|
String info = "Feedbackinfo:\n" + "userid: " + u.getID() + "\nusername: " + u.getName() + "\nfullname: " + u.getFirstName() + ' ' + u.getLastName();
|
||||||
|
|
||||||
|
if(firstmsg && feedbackCallback != null) {
|
||||||
|
try {
|
||||||
|
info += '\n' + feedbackCallback.apply(u);
|
||||||
|
} catch (Throwable t) {
|
||||||
|
info += "\nError getting information: " + t.getMessage();
|
||||||
|
t.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
TInlineKeyboardMarkup markup = new TInlineKeyboardMarkup(1);
|
TInlineKeyboardMarkup markup = new TInlineKeyboardMarkup(1);
|
||||||
markup.addUrlButton("chat with user", "https://t.me/" + u.getName(), 1);
|
markup.addUrlButton("chat with user", "https://t.me/" + u.getName(), 1);
|
||||||
markup.addCallbackButton("↩ reply", buildRplyCallback(u.getID(), msgid), 1);
|
markup.addCallbackButton("↩ reply", buildRplyCallback(u.getID(), msgid), 1);
|
||||||
return new MessageBuilder().setAsync().setText(info).setMarkup(markup);
|
return new MessageBuilder().setAsync().setText(info).setFormatting(MessageBuilder.Formatting.HTML).setMarkup(markup);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean onCallback(UserCallbackEvent e) {
|
public boolean onCallback(UserCallbackEvent e) {
|
||||||
|
|
Loading…
Reference in New Issue