Add ghost support 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 4b4fe8d6ccb2428b60fe492d06065f126c97bc8c DIR parent 708589d9a8cd100e0145e0a69a6a7f1f99b4b82f HTML Author: Annna Robert-Houdin <annna@bitreich.org> Date: Thu, 31 Oct 2024 19:46:22 +0100 Add ghost support to annna. Diffstat: M annna-message-common | 16 +++++++++++++--- A ghost | 84 +++++++++++++++++++++++++++++++ 2 files changed, 97 insertions(+), 3 deletions(-) --- DIR diff --git a/annna-message-common b/annna-message-common @@ -624,14 +624,24 @@ case "${text}" in suri="$(printf "%s\n" "${word}" | bitreich-speak)" annna-say -s "${server}" -c "${channel}" "${suri}" ;; +"${ircuser}, please zombie say "*) + word="$(printf "%s\n" "${text}" | cut -c 26- | sed 's,\t, ,g')" + suri="$(printf "%s\n" "${word}" | zombie -e | bitreich-speak)" + annna-say -s "${server}" -c "${channel}" "${suri}" + ;; "${ircuser}, please zombie "*) word="$(printf "%s\n" "${text}" | cut -c 22- | sed 's,\t, ,g')" suri="$(printf "%s\n" "${word}" | zombie -e)" annna-say -s "${server}" -c "${channel}" "${suri}" ;; -"${ircuser}, please zombie say "*) - word="$(printf "%s\n" "${text}" | cut -c 26- | sed 's,\t, ,g')" - suri="$(printf "%s\n" "${word}" | zombie -e | bitreich-speak)" +"${ircuser}, please ghost say "*) + word="$(printf "%s\n" "${text}" | cut -c 25- | sed 's,\t, ,g')" + suri="$(printf "%s\n" "${word}" | ghost -e | bitreich-speak)" + annna-say -s "${server}" -c "${channel}" "${suri}" + ;; +"${ircuser}, please ghost "*) + word="$(printf "%s\n" "${text}" | cut -c 21- | sed 's,\t, ,g')" + suri="$(printf "%s\n" "${word}" | ghost -e)" annna-say -s "${server}" -c "${channel}" "${suri}" ;; "${ircuser}, what can I cook with "*) DIR diff --git a/ghost b/ghost @@ -0,0 +1,84 @@ +#!/usr/bin/env python +# coding=utf-8 +# +# Copy me if you can. +# by 20h +# +# Idea from: https://github.com/xdpirate/ghost-translator/blob/main/ghost-translator.py + +import os +import sys +import getopt + +def human2ghost(s): + r = "" + for c in s: + binc = bin(ord(c)^96)[2:] + for j in binc: + if j == "1": + r += "O" + else: + r += "o" + r += " " + return r + +def ghost2human(s): + r = "" + if len(s) == 0: + return r + + for c in s.split(" "): + if len(c) == 0: + continue + b = "" + for j in c: + if j == "O": + b += "1" + elif j == "o": + b += "0" + r += str(chr(int(b, 2)^96)) + return r + +def usage(app): + app = os.path.basename(app) + print("usage: %s [-h] [-e|-d]" % (app), file=sys.stderr) + sys.exit(1) + +def main(args): + try: + opts, largs = getopt.getopt(args[1:], "hed") + except getopt.GetoptError as err: + print(str(err)) + usage(args[0]) + + dodecode=0 + doencode=0 + + for o, a in opts: + if o == "-h": + usage(args[0]) + elif o == "-d": + dodecode=1 + elif o == "-e": + doencode=1 + else: + assert False, "unhandled option" + + ins = sys.stdin.read() + rs = None + if doencode: + words = ins.split(" ") + rs = " ".join([human2ghost(w) for w in words]) + if dodecode: + words = ins.split(" ") + rs = " ".join([ghost2human(w) for w in words]) + if rs != None: + print("%s" % (rs), end='') + else: + usage(args[0]) + + return 0 + +if __name__ == "__main__": + sys.exit(main(sys.argv)) +