refactor: replace old bot code with Matrix infra configs and scripts
- Remove obsolete Python bot (Wordle, commands, callbacks, welcome) - Add hookshot/ — all 11 webhook transformation functions + deploy.sh - Add cinny/ — config.json and dev-update.sh (nightly dev branch build) - Add landing/ — matrix.lotusguild.org landing page HTML - Add systemd/ — livekit-server, draupnir, cinny cron unit files - Add draupnir/ — production config (access token redacted) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
32
hookshot/grafana.js
Normal file
32
hookshot/grafana.js
Normal file
@@ -0,0 +1,32 @@
|
||||
var status = data.status || 'unknown';
|
||||
var emoji = status === 'firing' ? '🔴' : (status === 'resolved' ? '🟢' : '🟡');
|
||||
var title = data.title || ('[' + status.toUpperCase() + '] Grafana Alert');
|
||||
var alerts = data.alerts || [];
|
||||
var lines = [emoji + ' ' + title];
|
||||
var htmlParts = ['<b>' + emoji + ' ' + title + '</b>'];
|
||||
for (var i = 0; i < alerts.length && i < 5; i++) {
|
||||
var a = alerts[i];
|
||||
var labels = a.labels || {};
|
||||
var ann = a.annotations || {};
|
||||
var name = labels.alertname || '';
|
||||
var summary = ann.summary || ann.description || '';
|
||||
var instance = labels.instance || labels.job || '';
|
||||
var severity = labels.severity || '';
|
||||
var aStatus = a.status || '';
|
||||
var genURL = a.generatorURL || '';
|
||||
var aEmoji = aStatus === 'resolved' ? '🟢' : '🔴';
|
||||
if (alerts.length > 1) {
|
||||
var alertLine = aEmoji + ' ' + (name || 'Alert') + (severity ? ' [' + severity + ']' : '') + (instance ? ' \u2014 ' + instance : '') + (summary ? ': ' + summary : '');
|
||||
lines.push(alertLine);
|
||||
htmlParts.push(alertLine + (genURL ? ' <a href="' + genURL + '">\u2197</a>' : ''));
|
||||
} else {
|
||||
if (name && name !== title) { lines.push('Alert: ' + name); htmlParts.push('Alert: ' + name); }
|
||||
if (severity) { lines.push('Severity: ' + severity); htmlParts.push('Severity: ' + severity); }
|
||||
if (instance) { lines.push('Instance: ' + instance); htmlParts.push('Instance: ' + instance); }
|
||||
if (summary) { lines.push(summary); htmlParts.push(summary); }
|
||||
if (genURL) { lines.push('View: ' + genURL); htmlParts.push('<a href="' + genURL + '">View in Grafana</a>'); }
|
||||
}
|
||||
}
|
||||
if (alerts.length === 0 && data.message) { lines.push(data.message); htmlParts.push(data.message); }
|
||||
if (alerts.length > 5) { var more = '(+' + (alerts.length - 5) + ' more alerts)'; lines.push(more); htmlParts.push('<i>' + more + '</i>'); }
|
||||
result = { version: 'v2', plain: lines.join('\n'), html: htmlParts.join('<br>'), msgtype: 'm.notice' };
|
||||
Reference in New Issue
Block a user