js/wait-for-reply-state/notify-assignee.js (38 lines of code) (raw):

var entities = require('@jetbrains/youtrack-scripting-api/entities'); var DAY_IN_MS = 24 * 60 * 60 * 1000; exports.rule = new entities.Issue.onSchedule({ title: 'Reopen issue when external user adds comment', cron: '0 5 12 * * ?', search: 'State: {Wait for Reply} has: Assignee has: comments', guard: function(ctx) { var issue = ctx.issue; return issue.comments.last().author.isInGroup(ctx.developers.name) && issue.comments.last().created + 5 * DAY_IN_MS < Date.now(); }, action: function(ctx) { var issue = ctx.issue; var subject = "[Youtrack, 'Wait for Reply' reminder] Unanswered comment within 5 days"; var body = "Hi, " + issue.fields.Assignee.fullName + "! <br><br> " + "Issue <a href='" + issue.url + "'>" + issue.id + " " + issue.summary + "</a> " + "is in state 'Wait for Reply' more than 5 days. " + "It has unanswered comment:<br><b>" + issue.comments.last().text + "</b><br><br> Please answer or resolved issue.<br><br>" + "<p style='color: gray;font-size: 12px;margin-top: 1em;border-top: 1px solid #D4D5D6'>" + "Sincerely yours, YouTrack" + "</p>"; issue.fields.Assignee.notify(subject, body); }, requirements: { State: { type: entities.State.fieldType, Wait: { name: 'Wait for Reply' } }, Assignee: { type: entities.User.fieldType }, developers: { type: entities.UserGroup } } });