Attempt to fix the problems with the say plugin.
This commit is contained in:
@@ -28,39 +28,40 @@ if [[ "$channelName" == "$userName" ]]; then
|
|||||||
firstArg="$1"
|
firstArg="$1"
|
||||||
echo "DEBUG say.sh: PM context detected, firstArg='$firstArg'" >> "$log"
|
echo "DEBUG say.sh: PM context detected, firstArg='$firstArg'" >> "$log"
|
||||||
|
|
||||||
# Check if first argument starts with # (explicit channel)
|
# Note: bot.sh strips "# " from commands, so #channel becomes just channel name
|
||||||
# IRC channels can contain: alphanumeric, -, _, and some special chars
|
# Check if first argument looks like a channel name (matches configured channels)
|
||||||
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
|
isConnected=false
|
||||||
|
targetChannel=""
|
||||||
|
|
||||||
for configuredChannel in "${channels[@]}"; do
|
for configuredChannel in "${channels[@]}"; do
|
||||||
if [[ "$configuredChannel" == "$targetChannel" ]]; then
|
if [[ "$firstArg" == "$configuredChannel" ]]; then
|
||||||
isConnected=true
|
isConnected=true
|
||||||
|
targetChannel="$configuredChannel"
|
||||||
break
|
break
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
if [[ "$isConnected" == "true" ]]; then
|
if [[ "$isConnected" == "true" ]]; then
|
||||||
# Send message to specified channel
|
# First arg is a known channel, send message there
|
||||||
shift
|
shift
|
||||||
if [[ -z "$*" ]]; then
|
if [[ -z "$*" ]]; then
|
||||||
msg "$userName" "Please provide a message to say in $firstArg."
|
msg "$userName" "Please provide a message to say in #$targetChannel."
|
||||||
else
|
else
|
||||||
msg "$firstArg" "$*"
|
msg "#$targetChannel" "$*"
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
# Not connected to that channel
|
# Check if first arg looks like it could be a channel name (not in our list)
|
||||||
msg "$userName" "I am not connected to $firstArg."
|
# If it contains no spaces and looks channel-ish, assume user specified wrong channel
|
||||||
fi
|
if [[ "$firstArg" =~ ^[a-zA-Z0-9_-]+$ ]] && [[ ! "$firstArg" =~ [[:space:]] ]]; then
|
||||||
|
# Looks like a channel name but we're not connected
|
||||||
|
msg "$userName" "I am not connected to #$firstArg."
|
||||||
else
|
else
|
||||||
# No channel specified or doesn't start with #, broadcast to all channels
|
# No channel specified, broadcast to all channels
|
||||||
for configuredChannel in "${channels[@]}"; do
|
for configuredChannel in "${channels[@]}"; do
|
||||||
msg "#$configuredChannel" "$*"
|
msg "#$configuredChannel" "$*"
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
fi
|
||||||
else
|
else
|
||||||
# Channel context: just say the message in the current channel
|
# Channel context: just say the message in the current channel
|
||||||
msg "$channelName" "$*"
|
msg "$channelName" "$*"
|
||||||
|
|||||||
Reference in New Issue
Block a user