l prism.r: add binaergewitter bot

This commit is contained in:
lassulus 2022-05-29 00:38:45 +02:00
parent 88a61c2611
commit 4d33f2ebea
3 changed files with 102 additions and 0 deletions

View File

@ -124,6 +124,7 @@ with import <stockholm/lib>;
<stockholm/lass/2configs/container-networking.nix>
<stockholm/lass/2configs/jitsi.nix>
<stockholm/lass/2configs/fysiirc.nix>
<stockholm/lass/2configs/bgt-bot>
{
services.tor = {
enable = true;

View File

@ -0,0 +1,57 @@
#!/bin/sh
# needs in path:
# curl gnugrep jq
# creates and manages $PWD/state
set -xeuf
send_reaktor(){
# usage: send_reaktor "text"
echo "send_reaktor: $1"
curl -fsS "http://localhost:$REAKTOR_PORT" \
-H content-type:application/json \
-d "$(jq -n \
--arg text "$1" \
--arg channel "$IRC_CHANNEL" \
'{
command:"PRIVMSG",
params:[$channel,$text]
}'
)"
}
live=$(shuf -n1 <<EOF
Binärgewitter Liveshow hat begonnen! http://stream.radiotux.de:8000/binaergewitter.mp3
EOF
)
offline=$(shuf -n1 <<EOF
Live stream vorbei
EOF
)
error=$(shuf -n1 <<EOF
something went wrong
EOF
)
if curl -Ss http://stream.radiotux.de:8000 | grep -q 'Mount Point /binaergewitter'; then
state='live'
else
state='offline'
fi
prevstate=$(cat state ||:)
if test "$state" == "$(cat state)";then
#echo "current and last state is the same ($state), doing nothing"
:
else
echo "API state and last state differ ( '$state' != '$prevstate')"
if test "$state" == 'live';then
send_reaktor "$live"
elif test "$state" == 'offline';then
send_reaktor "$offline"
else
send_reaktor "$error"
fi
echo 'updating state'
printf "%s" "$state" > state
fi

View File

@ -0,0 +1,44 @@
{ config, lib, pkgs, ... }:
let
bot_port = "7654";
irc_channel = "#binaergewitter";
in
{
krebs.reaktor2.bgt-announce = {
hostname = "irc.libera.chat";
port = "6697";
nick = "bgt-announce";
API.listen = "inet://127.0.0.1:${bot_port}";
plugins = [
{
plugin = "register";
config = {
channels = [
irc_channel
];
};
}
];
};
systemd.services.check_bgt_show = {
startAt = "*:0/5";
environment = {
IRC_CHANNEL = irc_channel;
REAKTOR_PORT = bot_port;
};
path = with pkgs; [
curl
gnugrep
jq
];
script = builtins.readFile ./bgt-check.sh;
serviceConfig = {
DynamicUser = true;
StateDirectory = "bgt-announce";
WorkingDirectory = "/var/lib/bgt-announce";
PrivateTmp = true;
};
};
}