Amp up the say module.

This commit is contained in:
Storm Dragon
2025-11-20 12:26:54 -05:00
parent 5b3f8d4825
commit 2a2f24ab6d

View File

@@ -1,7 +1,62 @@
#!/usr/bin/env bash
[ -f functions.sh ] && source functions.sh
# shellcheck source=/dev/null
[ -f bot.cfg ] && source bot.cfg
shift
chan="$1"
shift
msg "$chan" "$@"
userName="$1"
channelName="$2"
shift 2
# Check if there are any arguments
if [[ -z "$*" ]]; then
msg "$channelName" "$userName: Please provide a message to say."
exit 0
fi
# Ensure channels array is available
if [[ -z "${channels[*]}" ]]; then
msg "$channelName" "$userName: Configuration error - no channels configured."
exit 1
fi
# Check if invoked from a PM (channel name equals username)
if [[ "$channelName" == "$userName" ]]; then
# PM context: check if first argument is a channel name
firstArg="$1"
# Check if first argument starts with # (explicit channel)
if [[ "$firstArg" =~ ^#[a-zA-Z0-9_-]+$ ]]; then
# Remove # prefix for comparison with configured channels
targetChannel="${firstArg#\#}"
# Check if the bot is connected to this channel
isConnected=false
for configuredChannel in "${channels[@]}"; do
if [[ "$configuredChannel" == "$targetChannel" ]]; then
isConnected=true
break
fi
done
if [[ "$isConnected" == "true" ]]; then
# Send message to specified channel
shift
if [[ -z "$*" ]]; then
msg "$userName" "Please provide a message to say in $firstArg."
else
msg "$firstArg" "$*"
fi
else
# Not connected to that channel
msg "$userName" "I am not connected to $firstArg."
fi
else
# No channel specified or doesn't start with #, broadcast to all channels
for configuredChannel in "${channels[@]}"; do
msg "#$configuredChannel" "$*"
done
fi
else
# Channel context: just say the message in the current channel
msg "$channelName" "$*"
fi