From 9fd6a1490a54462bf2e247392f4091458396af5d Mon Sep 17 00:00:00 2001 From: zuckerberg <5-zuckerberg@users.noreply.git.neet.dev> Date: Mon, 23 Aug 2021 22:53:07 -0400 Subject: [PATCH] karma module --- karma.py | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 karma.py diff --git a/karma.py b/karma.py new file mode 100644 index 0000000..c268887 --- /dev/null +++ b/karma.py @@ -0,0 +1,42 @@ +class Module: + def __init__(self): + self.commands = ["karma"] + self.auto = True + self.manual = { + "desc": "Count a user's karma.", + "bot_commands": { + "karma": lambda x: f"{x}karma", + "info": "Show your total amount of karma." + } + } + +def set_karma(dbc, nickname, points): + dbc.execute("CREATE TABLE IF NOT EXISTS karma " + "(nickname TEXT COLLATE NOCASE, points INTEGER);") + dbc.execute("INSERT OR IGNORE INTO karma VALUES (?, ?);", + (nickname, points)) + dbc.execute("UPDATE karma SET points=? WHERE nickname=?;", + (points, nickname)) + +def get_karma(dbc, nickname): + try: + dbc.execute("SELECT points FROM karma WHERE nickname=?;", + (nickname,)) + return dbc.fetchone()[0] + except Exception: + return 0 + +def main(i, irc): + dbc = i.db[1].cursor() + + if i.cmd == "karma": + k = get_karma(dbc, i.nickname) + irc.privmsg(i.channel, f"Karma for {i.nickname}: {k}") + + if i.channel == i.nickname: + return + + if re.match("^[a-z_\\-\\[\\]\\\\^{}|`][a-z0-9_\\-\\[\\]\\\\^{}|`]*\\+\\+$", i.msg): + set_karma(dbc, i.nickname, get_karma(dbc, i.nickname) + 1) + elif re.match("^[a-z_\\-\\[\\]\\\\^{}|`][a-z0-9_\\-\\[\\]\\\\^{}|`]*\\-\\-$", i.msg): + set_karma(dbc, i.nickname, get_karma(dbc, i.nickname) - 1) \ No newline at end of file