Доработки по персональным уведомлениям
This commit is contained in:
parent
fa96a87858
commit
6cff271d03
@ -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()
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
@ -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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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"),
|
||||||
|
Loading…
Reference in New Issue
Block a user