Add drunkness meter to annna. - annna - Annna the nice friendly bot.
(HTM) git clone git://bitreich.org/annna/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/annna/
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) Tags
(DIR) README
---
(DIR) commit ff1268c8d3e66b7fabf657c6d6e1943fa080b414
(DIR) parent 6403fdb39588b891fea517ebef3447d067fdc57a
(HTM) Author: Annna Robert-Houdin <annna@bitreich.org>
Date: Mon, 31 Jul 2023 21:49:15 +0200
Add drunkness meter to annna.
Diffstat:
M annna-message-common | 12 ++++++++++++
A autocorrect | 38 +++++++++++++++++++++++++++++++
A drunk-meter | 30 ++++++++++++++++++++++++++++++
3 files changed, 80 insertions(+), 0 deletions(-)
---
(DIR) diff --git a/annna-message-common b/annna-message-common
@@ -506,6 +506,18 @@ case "${text}" in
# Emulate https://threats.kaspersky.com/en/threat/IRC-Worm.DOS.Septic/
annna-say -s "${server}" -c "${channel}" "${user}, Your word is my command, Power to satan!"
;;
+"${ircuser}, how drunk is "*)
+ {
+ drunknick="$(printf "%s\n" "${text}" \
+ | sed 's,.*how drunk is \(.*\),\1,' \
+ | tr -d '?')"
+ drunkness="$(drunk-meter "${ircbase}/${server}/${channel}/out" "${drunknick}")"
+ if [ -n "${drunkness}" ];
+ then
+ annna-say -s "${server}" -c "${channel}" "${user}, ${drunknick} is ${drunkness} drunk."
+ fi
+ } &
+ ;;
"${ircuser}, weather at "*)
{
weatherplace="$(printf "%s\n" "${text}" \
(DIR) diff --git a/autocorrect b/autocorrect
@@ -0,0 +1,38 @@
+#!/usr/bin/env python
+# coding=utf-8
+
+import os
+import sys
+import getopt
+import io
+from autocorrect import Speller
+
+def usage(app):
+ app = os.path.basename(app)
+ print("usage: %s [-h] str..." % (app), file=sys.stderr)
+ sys.exit(1)
+
+def main(args):
+ try:
+ opts, largs = getopt.getopt(args[1:], "h")
+ except getopt.GetoptError as err:
+ print(str(err))
+ usage(args[0])
+
+ for o, a in opts:
+ if o == "-h":
+ usage(args[0])
+ else:
+ assert False, "unhandled option"
+
+ if len(largs) < 1:
+ usage(args[0])
+
+ spell = Speller()
+ print("%s" % (spell(" ".join(largs))))
+
+ return 0
+
+if __name__ == "__main__":
+ sys.exit(main(sys.argv))
+
(DIR) diff --git a/drunk-meter b/drunk-meter
@@ -0,0 +1,30 @@
+#!/bin/sh
+
+export PATH="$HOME/bin:$PATH"
+
+if [ $# -lt 2 ];
+then
+ printf "usage: %s chanpath nick\n" "$(basename "$0")" >&2
+ exit 1
+fi
+
+chanpath="$1"
+nickname="$2"
+
+if [ ! -e "${chanpath}" ];
+then
+ exit 1
+fi
+
+grep " <${nickname}> " "${chanpath}" \
+ | tail -n 10 \
+| {
+ while read -r line;
+ do
+ printf "%s" $(levenshtein-distance "${line}" \
+ "$(autocorrect "${line}")");
+ printf " + ";
+ done;
+ printf "0\n";
+} | bc
+