From a8653ad52bd7f6ff86aa438b8ae94858a973a541 Mon Sep 17 00:00:00 2001 From: Nick Chambers Date: Wed, 23 Jun 2021 02:35:42 -0500 Subject: [PATCH] Make markov chain-enabled channels reloadable --- rowbot | 35 +++++++++++++++++++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/rowbot b/rowbot index 89cfb6a..15d1524 100755 --- a/rowbot +++ b/rowbot @@ -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