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 EventManager evntmgr = new EventManager();
|
||||
|
||||
private FeedbackCommand feedbackCmd;
|
||||
private FeedbackCommand feedbackCmd = null;
|
||||
|
||||
//async
|
||||
private AsyncHandler async = null;
|
||||
|
@ -291,6 +291,11 @@ public class TelegramAPI implements Runnable {
|
|||
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 {
|
||||
JSONObject jfile = request("getFile", "file_id=" + fileid);
|
||||
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.TMessage;
|
||||
import de.mrbesen.telegram.objects.TUser;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.TreeMap;
|
||||
import java.util.function.Function;
|
||||
|
||||
public class FeedbackCommand implements JSONCommandHandler {
|
||||
|
||||
|
@ -22,6 +24,8 @@ public class FeedbackCommand implements JSONCommandHandler {
|
|||
protected final TelegramAPI api;
|
||||
protected final List<Long> admins;
|
||||
protected final static String CANCELFEEDBACK = "cancelfeedback", REPLYFEEDBACK = "replyFeedback ";
|
||||
@Setter
|
||||
private Function<TUser, String> feedbackCallback = null;
|
||||
|
||||
|
||||
public FeedbackCommand(TelegramAPI api, List<Long> admins) {
|
||||
|
@ -54,19 +58,19 @@ public class FeedbackCommand implements JSONCommandHandler {
|
|||
public boolean onMsg(UserSendMessageEvent e) {
|
||||
TUser user = e.getUser();
|
||||
TMessage msg = e.getMessage();
|
||||
if (awaitingFeedback.containsKey(user.getID())) {
|
||||
if (awaitingFeedback.containsKey(user.getID())) { //user send a feedback
|
||||
removeMsg(user.getID(), e.getMessage());
|
||||
if(isFeedback(msg.getText())) {
|
||||
//fwd to admins
|
||||
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()));
|
||||
} else {
|
||||
System.out.println("feedback omitted: " + msg.getText());
|
||||
}
|
||||
return true;
|
||||
} else {
|
||||
} else { //reply to a message
|
||||
Long[] rplymsg = awnser.remove(user.getID());
|
||||
if(rplymsg != null) {
|
||||
if(admins.contains(user.getID())) {
|
||||
|
@ -86,7 +90,7 @@ public class FeedbackCommand implements JSONCommandHandler {
|
|||
TMessage.forwardAsync(api, rplymsg[0], msg);
|
||||
|
||||
//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());
|
||||
}
|
||||
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;
|
||||
}
|
||||
|
||||
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();
|
||||
|
||||
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);
|
||||
markup.addUrlButton("chat with user", "https://t.me/" + u.getName(), 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) {
|
||||
|
|
Loading…
Reference in New Issue