Add drunkness meter to annna. - annna - Annna the nice friendly bot. HTML 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 HTML 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 +