Amp up the say module.
This commit is contained in:
@@ -1,7 +1,62 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
[ -f functions.sh ] && source functions.sh
|
[ -f functions.sh ] && source functions.sh
|
||||||
|
# shellcheck source=/dev/null
|
||||||
|
[ -f bot.cfg ] && source bot.cfg
|
||||||
|
|
||||||
|
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
|
shift
|
||||||
chan="$1"
|
if [[ -z "$*" ]]; then
|
||||||
shift
|
msg "$userName" "Please provide a message to say in $firstArg."
|
||||||
msg "$chan" "$@"
|
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
|
||||||
|
|||||||
Reference in New Issue
Block a user