Introduction
Introduction Statistics Contact Development Disclaimer Help
annna-start-services: match tags with awk and allow more chars in tagname - ann…
git clone git://bitreich.org/annna/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws6…
Log
Files
Refs
Tags
README
---
commit 08482dd4d9ee32d6c664d729c243f971d8882a1a
parent 364c9d54b991011af5d7696c9d0d2df2b4079337
Author: Anders Damsgaard <[email protected]>
Date: Fri, 13 Nov 2020 10:47:22 +0100
annna-start-services: match tags with awk and allow more chars in tagname
This implementation avoids looping over entire hashtags.txt for
every message that the bot sees. There is also an option to recognize
multiple tags per message, although this is disabled by default
(print_n_hashtags=1).
Signed-off-by: Annna Robert-Houdin <[email protected]>
Diffstat:
M annna-start-services | 41 ++++++++++++++---------------…
1 file changed, 19 insertions(+), 22 deletions(-)
---
diff --git a/annna-start-services b/annna-start-services
@@ -17,6 +17,7 @@ iiroot="/home/annna/irc"
iibase="/home/annna/irc/chat.freenode.net"
modbase="/home/annna/bin/modules/"
hashtagfile="${modbase}/hashtags/hashtags.txt"
+print_n_hashtags=1
hashtags() {
cat ${hashtagfile} 2>/dev/null
@@ -656,28 +657,24 @@ annna_common() {
randomtag=$(($randomtag - 1))
done
else
- tagname=""
- taguri=""
- for tag in $(hashtags);
- do
- [ -z "${tagname}" ] && tagname="${tag}" && continue
- taguri="${tag}"
-
- case "${text}" in
- *\#nospoil*)
- break;
- ;;
- *${tagname}[^a-zA-Z-]*)
- annna-say -c "${channel}" "${tagname}: ${tagur…
- break;
- ;;
- *${tagname})
- annna-say -c "${channel}" "${tagname}: ${tagur…
- break;
- ;;
- esac
- tagname=""
- done
+ printf '%s' "$text" | awk -v taglimit="$print_n_hashtags" '
+ {
+ if ($0 ~ /#/ && $0 !~ /#nospoil/) {
+ for (i = 1; i <= NF; i++) {
+ if (match($i, /#[A-z0-9\+-]*/)) {
+ tags[j++] = substr($i, RSTART,…
+ }
+ }
+ }
+ }
+ END {
+ for (tag in tags) {
+ if (k++ < taglimit)
+ print tags[tag]
+ }
+ }' | while read -r tag; do
+ tagline="$(grep "${tag} " "${tagfile}")"
+ annna-say -c "${channel}" "${tagline% *}: ${tagline#* …
fi
# Membership Level.
You are viewing proxied material from bitreich.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.