Доработки по персональным уведомлениям

This commit is contained in:
upagge 2020-03-13 00:17:52 +03:00
parent fa96a87858
commit 6cff271d03
No known key found for this signature in database
GPG Key ID: 15CD012E46F6BA34
3 changed files with 39 additions and 35 deletions

View File

@ -36,7 +36,7 @@ public class SchedulerComments {
private final BitbucketConfig bitbucketConfig; private final BitbucketConfig bitbucketConfig;
@Scheduled(cron = "5 8-18 * * MON-FRI") @Scheduled(cron = "0 5 8-18 * * MON-FRI")
public void test() { public void test() {
long newLastCommentId = commentService.getLastCommentId(); long newLastCommentId = commentService.getLastCommentId();
long commentId = newLastCommentId + 1; long commentId = newLastCommentId + 1;
@ -57,6 +57,7 @@ public class SchedulerComments {
final CommentJson comment = commentJson.get(); final CommentJson comment = commentJson.get();
notification( notification(
comment, comment,
pullRequest.getName(),
bitbucketConfig.getUrlPullRequest() bitbucketConfig.getUrlPullRequest()
.replace("{projectKey}", pullRequest.getProjectKey()) .replace("{projectKey}", pullRequest.getProjectKey())
.replace("{repositorySlug}", pullRequest.getRepositorySlug()) .replace("{repositorySlug}", pullRequest.getRepositorySlug())
@ -87,7 +88,7 @@ public class SchedulerComments {
.replace("{commentId}", String.valueOf(lastCommentId)); .replace("{commentId}", String.valueOf(lastCommentId));
} }
private void notification(@NonNull CommentJson comment, @NonNull String urlPr) { private void notification(@NonNull CommentJson comment, @NonNull String namePr, @NonNull String urlPr) {
final String message = comment.getText(); final String message = comment.getText();
Matcher matcher = PATTERN.matcher(message); Matcher matcher = PATTERN.matcher(message);
while (matcher.find()) { while (matcher.find()) {
@ -96,7 +97,7 @@ public class SchedulerComments {
telegramId -> messageSendService.add( telegramId -> messageSendService.add(
MessageSend.builder() MessageSend.builder()
.telegramId(telegramId) .telegramId(telegramId)
.message(Message.personalNotify(comment, urlPr)) .message(Message.personalNotify(comment, namePr, urlPr))
.build() .build()
) )
); );

View File

@ -31,19 +31,19 @@ public class Message {
@NonNull @NonNull
public static String newPullRequest(PullRequest pullRequest) { public static String newPullRequest(PullRequest pullRequest) {
return Smile.FUN + " *Новый Pull Request*" + Smile.BREAK + return Smile.FUN + " *Новый Pull Request*" + Smile.BR +
link(pullRequest.getName(), pullRequest.getUrl()) + link(pullRequest.getName(), pullRequest.getUrl()) +
Smile.HR + Smile.HR +
Smile.AUTHOR + ": " + pullRequest.getAuthor().getLogin() + Smile.AUTHOR + ": " + pullRequest.getAuthor().getLogin() +
Smile.TWO_BREAK; Smile.TWO_BR;
} }
@NonNull @NonNull
public static String statusPullRequest(String name, String url, PullRequestStatus oldStatus, PullRequestStatus newStatus) { public static String statusPullRequest(String name, String url, PullRequestStatus oldStatus, PullRequestStatus newStatus) {
return Smile.PEN + " *Изменился статус вашего ПР*" + Smile.HR + return Smile.PEN + " *Изменился статус вашего ПР*" + Smile.HR +
link(name, url) + Smile.BREAK + link(name, url) + Smile.BR +
oldStatus.name() + " -> " + newStatus.name() + oldStatus.name() + " -> " + newStatus.name() +
Smile.TWO_BREAK; Smile.TWO_BR;
} }
@NonNull @NonNull
@ -52,25 +52,25 @@ public class Message {
final Map<ReviewerChange.Type, List<ReviewerChange>> changes = reviewerChanges.stream() final Map<ReviewerChange.Type, List<ReviewerChange>> changes = reviewerChanges.stream()
.collect(Collectors.groupingBy(ReviewerChange::getType)); .collect(Collectors.groupingBy(ReviewerChange::getType));
if (changes.containsKey(OLD)) { if (changes.containsKey(OLD)) {
stringBuilder.append(Smile.BREAK).append("Изменили свое решение:").append(Smile.BREAK); stringBuilder.append(Smile.BR).append("Изменили свое решение:").append(Smile.BR);
changes.get(OLD).forEach( changes.get(OLD).forEach(
change -> stringBuilder change -> stringBuilder
.append(Smile.AUTHOR).append(change.getName()).append(": ") .append(Smile.AUTHOR).append(change.getName()).append(": ")
.append(change.getOldStatus().getValue()).append(" -> ") .append(change.getOldStatus().getValue()).append(" -> ")
.append(change.getStatus().getValue()) .append(change.getStatus().getValue())
.append(Smile.BREAK) .append(Smile.BR)
); );
} }
if (changes.containsKey(NEW)) { if (changes.containsKey(NEW)) {
stringBuilder.append(Smile.BREAK).append("Новые ревьюверы:").append(Smile.BREAK); stringBuilder.append(Smile.BR).append("Новые ревьюверы:").append(Smile.BR);
changes.get(NEW).forEach( changes.get(NEW).forEach(
change -> stringBuilder change -> stringBuilder
.append(change.getName()).append(" (").append(change.getStatus().getValue()).append(")") .append(change.getName()).append(" (").append(change.getStatus().getValue()).append(")")
.append(Smile.BREAK) .append(Smile.BR)
); );
} }
if (changes.containsKey(DELETED)) { if (changes.containsKey(DELETED)) {
stringBuilder.append(Smile.BREAK).append("Не выдержали ревью:").append(Smile.BREAK) stringBuilder.append(Smile.BR).append("Не выдержали ревью:").append(Smile.BR)
.append( .append(
changes.get(DELETED).stream() changes.get(DELETED).stream()
.map(ReviewerChange::getName).collect(Collectors.joining(",")) .map(ReviewerChange::getName).collect(Collectors.joining(","))
@ -82,7 +82,7 @@ public class Message {
return Optional.of( return Optional.of(
Smile.PEN + " *Изменения ревьюверов вашего ПР*" + Smile.PEN + " *Изменения ревьюверов вашего ПР*" +
Smile.HR + Smile.HR +
link(pullRequest.getName(), pullRequest.getUrl()) + Smile.BREAK + link(pullRequest.getName(), pullRequest.getUrl()) + Smile.BR +
createMessage createMessage
); );
} }
@ -91,41 +91,41 @@ public class Message {
@NonNull @NonNull
public static String updatePullRequest(String pullRequestName, String prUrl, String author) { public static String updatePullRequest(String pullRequestName, String prUrl, String author) {
return Smile.UPDATE + " *Обновление Pull Request*" + Smile.BREAK + return Smile.UPDATE + " *Обновление Pull Request*" + Smile.BR +
link(pullRequestName, prUrl) + link(pullRequestName, prUrl) +
Smile.HR + Smile.HR +
Smile.AUTHOR + ": " + author + Smile.AUTHOR + ": " + author +
Smile.TWO_BREAK; Smile.TWO_BR;
} }
@NonNull @NonNull
public static String goodMorningStatistic(List<PullRequest> pullRequestsReviews, List<PullRequest> pullRequestsNeedWork) { public static String goodMorningStatistic(List<PullRequest> pullRequestsReviews, List<PullRequest> pullRequestsNeedWork) {
StringBuilder message = new StringBuilder().append(Smile.SUN).append(" Доброе утро ").append(Smile.SUN).append(Smile.HR); StringBuilder message = new StringBuilder().append(Smile.SUN).append(" Доброе утро ").append(Smile.SUN).append(Smile.HR);
if (!pullRequestsReviews.isEmpty()) { if (!pullRequestsReviews.isEmpty()) {
message.append("Сегодня тебя ждет проверка ").append(pullRequestsReviews.size()).append(" ПР!").append(Smile.TWO_BREAK) message.append("Сегодня тебя ждет проверка ").append(pullRequestsReviews.size()).append(" ПР!").append(Smile.TWO_BR)
.append("Топ старых ПР:").append(Smile.BREAK); .append("Топ старых ПР:").append(Smile.BR);
List<PullRequest> oldPr = pullRequestsReviews.stream() List<PullRequest> oldPr = pullRequestsReviews.stream()
.sorted(COMPARATOR) .sorted(COMPARATOR)
.limit(PR_COUNT) .limit(PR_COUNT)
.collect(Collectors.toList()); .collect(Collectors.toList());
oldPr.forEach(pullRequest -> message.append(topPr(pullRequest))); oldPr.forEach(pullRequest -> message.append(topPr(pullRequest)));
message.append(Smile.BREAK); message.append(Smile.BR);
} else { } else {
message.append("Ты либо самый лучший работник, либо тебе не доверяют проверку ПР ").append(Smile.MEGA_FUN).append(Smile.TWO_BREAK) message.append("Ты либо самый лучший работник, либо тебе не доверяют проверку ПР ").append(Smile.MEGA_FUN).append(Smile.TWO_BR)
.append("Поздравляю, у тебя ни одного ПР на проверку!").append(Smile.BREAK); .append("Поздравляю, у тебя ни одного ПР на проверку!").append(Smile.BR);
} }
if (!pullRequestsNeedWork.isEmpty()) { if (!pullRequestsNeedWork.isEmpty()) {
message.append(Smile.BREAK).append(Smile.DANGEROUS).append(" Так же у тебя на доработке находится ").append(pullRequestsNeedWork.size()).append(" ПР").append(Smile.BREAK); message.append(Smile.BR).append(Smile.DANGEROUS).append(" Так же у тебя на доработке находится ").append(pullRequestsNeedWork.size()).append(" ПР").append(Smile.BR);
message.append(needWorkPr(pullRequestsNeedWork)).append(Smile.BREAK); message.append(needWorkPr(pullRequestsNeedWork)).append(Smile.BR);
} }
if (dayX()) { if (dayX()) {
message.append(Smile.BREAK).append(Smile.FUN).append(" Кстати, поздравляю, сегодня день З").append(Smile.BREAK) message.append(Smile.BR).append(Smile.FUN).append(" Кстати, поздравляю, сегодня день З").append(Smile.BR)
.append(Smile.DANGEROUS).append("И раз такое дело, то напоминаю, что в виду независящих от разработчика условий, бот работает на платном VDS. Поэтому всячески приветствуются ") .append(Smile.DANGEROUS).append("И раз такое дело, то напоминаю, что в виду независящих от разработчика условий, бот работает на платном VDS. Поэтому всячески приветствуются ")
.append(link("донаты на оплату сервера", DONATION_LINK)).append(Smile.BREAK); .append(link("донаты на оплату сервера", DONATION_LINK)).append(Smile.BR);
} }
message message
.append(Smile.BREAK) .append(Smile.BR)
.append("Удачного дня ").append(Smile.FLOWER).append(Smile.TWO_BREAK); .append("Удачного дня ").append(Smile.FLOWER).append(Smile.TWO_BR);
return message.toString(); return message.toString();
} }
@ -134,7 +134,7 @@ public class Message {
pullRequestsNeedWork.stream() pullRequestsNeedWork.stream()
.limit(3) .limit(3)
.forEach( .forEach(
pullRequest -> message.append("-- ").append(link(pullRequest.getName(), pullRequest.getUrl())).append(Smile.BREAK) pullRequest -> message.append("-- ").append(link(pullRequest.getName(), pullRequest.getUrl())).append(Smile.BR)
); );
return message.toString(); return message.toString();
} }
@ -142,7 +142,7 @@ public class Message {
private static String topPr(PullRequest pullRequest) { private static String topPr(PullRequest pullRequest) {
return Smile.statusPr(pullRequest.getUpdateDate()) + " " + return Smile.statusPr(pullRequest.getUpdateDate()) + " " +
link(pullRequest.getName(), pullRequest.getUrl()) + link(pullRequest.getName(), pullRequest.getUrl()) +
Smile.BREAK; Smile.BR;
} }
private static boolean dayX() { private static boolean dayX() {
@ -157,13 +157,16 @@ public class Message {
@NonNull @NonNull
public static String goodWeekEnd() { public static String goodWeekEnd() {
return "Ну вот и все! Веселых выходных " + Smile.MIG + Smile.BREAK + return "Ну вот и все! Веселых выходных " + Smile.MIG + Smile.BR +
"До понедельника" + Smile.BUY + Smile.TWO_BREAK; "До понедельника" + Smile.BUY + Smile.TWO_BR;
} }
public static String personalNotify(@NonNull CommentJson comment, @NonNull String urlPr) { public static String personalNotify(@NonNull CommentJson comment, @NonNull String namePr, @NonNull String urlPr) {
return Smile.BELL + " Вам " + link("тут", urlPr) + " телеграмма пришла от " + comment.getAuthor().getName() + return Smile.BELL + " *Новое упоминание*" + Smile.BR +
link(namePr, urlPr) +
Smile.HR + Smile.HR +
comment.getText().replaceAll("@[\\w]+", ""); comment.getText().replaceAll("@[\\w]+", "") +
Smile.HR +
Smile.AUTHOR + ": " + comment.getAuthor().getName();
} }
} }

View File

@ -9,8 +9,8 @@ import java.time.Period;
@AllArgsConstructor @AllArgsConstructor
public enum Smile { public enum Smile {
BREAK("\n"), BR("\n"),
TWO_BREAK("\n\n"), TWO_BR("\n\n"),
AUTHOR("\uD83D\uDC68\u200D\uD83D\uDCBB"), AUTHOR("\uD83D\uDC68\u200D\uD83D\uDCBB"),
PEN("✏️"), PEN("✏️"),
FUN("\uD83C\uDF89"), FUN("\uD83C\uDF89"),