Skip to content

Commit 2ff2895

Browse files
committed
Use shorter command parameters
1 parent 21c973e commit 2ff2895

File tree

1 file changed

+34
-13
lines changed

1 file changed

+34
-13
lines changed

src/main/java/com/annimon/similarimagesbot/BotHandler.java

Lines changed: 34 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,9 @@
3131

3232
public class BotHandler extends BaseBotHandler {
3333

34-
private final Pattern delPattern = Pattern.compile("/del(\\d+)m(\\d+)");
35-
private final Pattern comparePattern = Pattern.compile("/compare(\\d+)m(\\d+)x(\\d+)");
34+
private static final int RADIX = 36;
35+
private final Pattern delPattern = Pattern.compile("/del([^_]+)_(\\d+)");
36+
private final Pattern comparePattern = Pattern.compile("/cmp([^-]+)_([^-]+)_(.*)");
3637

3738
private final ImageIndexer indexer;
3839
private long adminId;
@@ -70,8 +71,8 @@ private Optional<Post> processDelCommand(Matcher m) {
7071
if (!m.find()) {
7172
return Optional.empty();
7273
}
73-
final var channelId = Long.parseLong("-100" + m.group(1));
74-
final var messageId = Integer.parseInt(m.group(2));
74+
final var channelId = parseChannelIdForCommand(m.group(1));
75+
final var messageId = Integer.parseInt(m.group(2), RADIX);
7576
LOGGER.debug("Delete message {} in {}", messageId, channelId);
7677
bot.execute(new DeleteMessage(channelId, messageId));
7778
try {
@@ -86,9 +87,9 @@ private Optional<Post> processCompareCommand(Matcher m) {
8687
if (!m.find()) {
8788
return Optional.empty();
8889
}
89-
final var channelId = Long.parseLong("-100" + m.group(1));
90-
final var messageA = Integer.parseInt(m.group(2));
91-
final var messageB = Integer.parseInt(m.group(3));
90+
final var channelId = parseChannelIdForCommand(m.group(1));
91+
final var messageA = Integer.parseInt(m.group(2), RADIX);
92+
final var messageB = messageA - Integer.parseInt(m.group(3), RADIX);
9293
LOGGER.debug("Compare messages {} and {} in {}", messageA, messageB, channelId);
9394

9495
// Forward and get photo to compare
@@ -139,21 +140,20 @@ private void processUpdates(List<Update> updates, Set<Post> ignoredPosts) {
139140

140141
private void sendReport(List<SimilarImagesInfo> infos) {
141142
String report = infos.stream().map(info -> {
142-
final var post = info.getOriginalPost();
143-
final var channelId = post.getChannelId().toString().replace("-100", "");
144-
String text = "For post " + formatPostLink(post) + " found:\n";
143+
final var originalPost = info.getOriginalPost();
144+
final var channelId = formatChannelIdForCommands(originalPost.getChannelId());
145+
String text = "For originalPost " + formatPostLink(originalPost) + " found:\n";
145146
// Matching results
146147
text += info.getResults().stream()
147148
.map(r -> String.format(" %s, dst: %.2f", formatPostLink(r.getPost()), r.getDistance()))
148149
.collect(Collectors.joining("\n"));
149150
// /compare command
150151
text += info.getResults().stream()
151152
.map(ImageResult::getPost)
152-
.map(p -> String.format("%n/compare%sm%dx%d",
153-
channelId, post.getMessageId(), p.getMessageId()))
153+
.map(p -> formatCompareCommand(channelId, originalPost,p))
154154
.collect(Collectors.joining());
155155
// /del command
156-
text += String.format("%n/del%sm%d", channelId, post.getMessageId());
156+
text += formatDelCommand(channelId, originalPost);
157157
return text;
158158
}).collect(Collectors.joining("\n\n"));
159159

@@ -164,11 +164,32 @@ private void sendReport(List<SimilarImagesInfo> infos) {
164164
}
165165
}
166166

167+
private String formatChannelIdForCommands(Long channelId) {
168+
var id = channelId.toString().replace("-100", "");
169+
return Long.toString(Long.parseLong(id), RADIX);
170+
}
171+
172+
private long parseChannelIdForCommand(String str) {
173+
return Long.parseLong("-100" + Long.parseLong(str, RADIX));
174+
}
175+
167176
private String formatPostLink(Post post) {
168177
String link = linkToMessage(post.getChannelId(), post.getMessageId());
169178
return String.format("[#%d](%s)", post.getMessageId(), link);
170179
}
171180

181+
private String formatCompareCommand(String channelId, Post originalPost, Post currentPost) {
182+
final var originalPostId = originalPost.getMessageId();
183+
final var postDiffId = originalPostId - currentPost.getMessageId();
184+
return String.format("%n/cmp%s_%s_%s",
185+
channelId, Integer.toString(originalPostId, RADIX), Integer.toString(postDiffId, RADIX));
186+
}
187+
188+
private String formatDelCommand(String channelId, Post originalPost) {
189+
final var originalPostId = originalPost.getMessageId();
190+
return String.format("%n/del%s_%s", channelId, Integer.toString(originalPostId, RADIX));
191+
}
192+
172193
private String linkToMessage(Message msg) {
173194
return linkToMessage(msg.chat().id(), msg.messageId());
174195
}

0 commit comments

Comments
 (0)