Make markov chain-enabled channels reloadable

This commit is contained in:
Nick Chambers 2021-06-23 02:35:42 -05:00
parent e529246ccc
commit a8653ad52b
1 changed files with 33 additions and 2 deletions

35
rowbot
View File

@ -210,6 +210,14 @@ if [[ $markov_seed ]]; then
fi
if [[ $reload = yes ]]; then
if [[ -v RECORDING ]]; then
IFS=, read -ra recording <<< "$RECORDING"
for pair in "${recording[@]}"; do
enabled[${pair%=*}]=${pair##*=}
done
fi
reload_vars=(
nick ident host level log log_fd alarm_pid tls_pid in_sock
out_sock sock_dir sys_root fact_root dev trigger registered
@ -291,10 +299,18 @@ config-reload() {
exec {log_fd}>"$log"
fi
if [[ -v markov_chains[@] ]]; then
for key in "${!enabled[@]}"; do
recording+=",%s=%s" "$key" "${enabled[$key]}"
done
export RECORDING=${recording#,}
fi
reload_vars=(
nick ident host level log log_fd alarm_pid tls_pid in_sock
out_sock sock_dir sys_root fact_root dev trigger registered
keep_trying desired_nick
keep_trying desired_nick
)
for env_var in "${reload_vars[@]}"; do
@ -722,6 +738,13 @@ hook_cmd_markov() {
enabled[$to]=no
privmsg "$to" "no longer recording $to"
;;
enabled\?)
if [[ ${to:0:1} != \# || ${enabled[$to]} = yes ]]; then
privmsg "$to" "yes, I am recording $to for markov chains."
else
privmsg "$to" "no, I am not recording $to for markov chains"
fi
;;
markov)
keys=("${!markov_chains[@]}")
(( idx = RANDOM % ${#keys[@]} ))
@ -804,7 +827,7 @@ hook_cmd_control_panel() {
return 0
fi
local channel env_var reload_vars recipient msg
local channel key recording env_var reload_vars recipient msg
case $action in
raw)
@ -818,6 +841,14 @@ hook_cmd_control_panel() {
done
;;
reload)
if [[ -v markov_chains[@] ]]; then
for key in "${!enabled[@]}"; do
recording+=",$key=${enabled[$key]}"
done
export RECORDING=${recording#,}
fi
reload_vars=(
nick ident host level log log_fd alarm_pid tls_pid in_sock
out_sock sock_dir sys_root fact_root dev trigger registered