URI: 
       Add wikipedia guessing game 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 56bd88325d9acf1fce9aa8cbe0e03245c48e8ec1
   DIR parent 0a9075f602fca9a5f41cc68f2b627b338c8a0376
  HTML Author: Annna Robert-Houdin <annna@bitreich.org>
       Date:   Mon, 10 Apr 2023 12:40:31 +0200
       
       Add wikipedia guessing game to annna.
       
       Diffstat:
         M annna-channel-service               |       3 +++
         A wikipediagame                       |     111 ++++++++++++++++++++++++++++++
       
       2 files changed, 114 insertions(+), 0 deletions(-)
       ---
   DIR diff --git a/annna-channel-service b/annna-channel-service
       @@ -28,6 +28,9 @@ do
                \#bitreich-idle)
                        annna-message-idle "${server}" "${channel}" "${user}" "${text}"
                        ;;
       +        \#bitreich-wikigame)
       +                annna-message-wikigame "${server}" "${channel}" "${user}" "${text}"
       +                ;;
                *)
                        annna-message-common "${server}" "${channel}" "${user}" "${text}"
                        ;;
   DIR diff --git a/wikipediagame b/wikipediagame
       @@ -0,0 +1,111 @@
       +#!/usr/bin/env python
       +# coding=utf-8
       +#
       +# Idea from: https://github.com/izabera/izabot/blob/master/cus_lib.py#L89
       +# 
       +
       +import os
       +import sys
       +import getopt
       +import wikipedia as w
       +import json
       +
       +def usage(app):
       +    app = os.path.basename(app)
       +    print("usage: %s [-h] cmd" % (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])
       +
       +    basepath = "/home/annna/bin/modules/wikipediagame"
       +    printsummary = 0
       +    newtitle = 0
       +
       +    for o, a in opts:
       +        if o == "-h":
       +            usage(args[0])
       +        else:
       +            assert False, "unhandled option"
       +
       +    if len(largs) < 1:
       +        usage(args[0])
       +
       +    titlepath = "%s/lasttitle" % (basepath)
       +    hintpath = "%s/hintsize" % (basepath)
       +
       +    cmd = largs[0]
       +    if cmd == "init":
       +        title = str(w.random())
       +        if os.path.exists(hintpath):
       +            os.remove(hintpath)
       +        if os.path.exists(titlepath):
       +            os.remove(titlepath)
       +        newtitle = 1
       +        printsummary = 1
       +    else:
       +        if os.path.exists(titlepath):
       +            titlefd = open(titlepath, "r")
       +            title = str(json.load(titlefd))
       +            titlefd.close()
       +        else:
       +            title = str(w.random())
       +            newtitle = 1
       +            printsummary = 1
       +
       +    if newtitle == 1:
       +        titlefd = open(titlepath, "w+")
       +        json.dump(title, titlefd)
       +        titlefd.close()
       +
       +    if cmd == "summary":
       +        printsummary = 1
       +
       +    if printsummary == 1:
       +        summary = w.summary(title).replace("\n", " ")
       +        for titlepart in title.split(" "):
       +            summary = summary.replace(titlepart, "*" * len(titlepart))
       +        print(summary)
       +
       +    if os.path.exists(hintpath):
       +        hintfd = open(hintpath, "r")
       +        try:
       +            hintsize = int(json.load(hintfd))
       +        except json.decoder.JSONDecodeError:
       +            hintsize = 0
       +        hintfd.close()
       +    else:
       +        hintsize = 0
       +
       +    if cmd == "hint":
       +        hintsize += 3
       +        hint = title[:hintsize] \
       +            + "".join(["*" if c != ' ' else ' ' for c in title[hintsize:]])
       +        print("Hint: %s" % (hint))
       +
       +        hintfd = open(hintpath, "w+")
       +        json.dump(hintsize, hintfd)
       +        hintfd.close()
       +    
       +    if cmd == "try":
       +        if len(largs) < 2:
       +            usage(args[0])
       +        trytext = largs[1]
       +        if title.strip().lower() == trytext.strip().lower():
       +            print("Congrats! You have found the right title! :: %s" % (title))
       +            if os.path.exists(hintpath):
       +                os.remove(hintpath)
       +            if os.path.exists(titlepath):
       +                os.remove(titlepath)
       +        else:
       +            print("Sorry, wrong guess.")
       +
       +    return 0
       +
       +if __name__ == "__main__":
       +    sys.exit(main(sys.argv))
       +