diff --git a/modules/say/say.sh b/modules/say/say.sh index c08d665..6766234 100755 --- a/modules/say/say.sh +++ b/modules/say/say.sh @@ -28,13 +28,16 @@ if [[ "$channelName" == "$userName" ]]; then firstArg="$1" echo "DEBUG say.sh: PM context detected, firstArg='$firstArg'" >> "$log" - # Note: bot.sh strips "# " from commands, so #channel becomes just channel name + # Note: bot.sh strips "# " (hash-space) from commands, but "#channel" stays intact + # Remove # prefix if present for comparison + firstArgNoHash="${firstArg#\#}" + # Check if first argument looks like a channel name (matches configured channels) isConnected=false targetChannel="" for configuredChannel in "${channels[@]}"; do - if [[ "$firstArg" == "$configuredChannel" ]]; then + if [[ "$firstArgNoHash" == "$configuredChannel" ]]; then isConnected=true targetChannel="$configuredChannel" break @@ -52,9 +55,9 @@ if [[ "$channelName" == "$userName" ]]; then else # Check if first arg looks like it could be a channel name (not in our list) # If it contains no spaces and looks channel-ish, assume user specified wrong channel - if [[ "$firstArg" =~ ^[a-zA-Z0-9_-]+$ ]] && [[ ! "$firstArg" =~ [[:space:]] ]]; then + if [[ "$firstArgNoHash" =~ ^[a-zA-Z0-9_-]+$ ]] && [[ ! "$firstArgNoHash" =~ [[:space:]] ]]; then # Looks like a channel name but we're not connected - msg "$userName" "I am not connected to #$firstArg." + msg "$userName" "I am not connected to #$firstArgNoHash." else # No channel specified, broadcast to all channels for configuredChannel in "${channels[@]}"; do