From f7c8740729bca3b668db68297560bfc8236a502d Mon Sep 17 00:00:00 2001 From: Ben Harris Date: Mon, 24 Feb 2020 11:14:49 -0500 Subject: small refactor and nickserv account stuff --- tooter.py | 75 +++++++++++++++++++++++++++++++-------------------------------- 1 file changed, 37 insertions(+), 38 deletions(-) mode change 100755 => 100644 tooter.py (limited to 'tooter.py') diff --git a/tooter.py b/tooter.py old mode 100755 new mode 100644 index 98248b5..c08c614 --- a/tooter.py +++ b/tooter.py @@ -1,44 +1,22 @@ #!/usr/bin/env python3 +from mastodon import Mastodon import emoji import json import os import re import socket import sys -from mastodon import Mastodon - -path = os.path.dirname(os.path.abspath(__file__)) - -with open(os.path.join(path, "config.json")) as f: - config = json.load(f) - -botnick = config["botnick"] -channels = config["channels"] -if len(sys.argv) > 1: - for c in sys.argv[1:]: - channels.append("#" + c) - -# read masto creds -with open(os.path.join(path, "tildeverse.json")) as f: - tildeverse_config = json.load(f) - -tildeverse = Mastodon( - client_id=tildeverse_config["client_id"], - client_secret=tildeverse_config["client_secret"], - access_token=tildeverse_config["access_token"], - api_base_url=tildeverse_config["base_url"], -) -with open(os.path.join(path, "tildeteam.json")) as f: - tildeteam_config = json.load(f) -tildeteam = Mastodon( - client_id=tildeteam_config["client_id"], - client_secret=tildeteam_config["client_secret"], - access_token=tildeteam_config["access_token"], - api_base_url=tildeteam_config["base_url"], -) +def masto_from_json(conf): + conf = json.load(conf) + return Mastodon( + client_id=conf["client_id"], + client_secret=conf["client_secret"], + access_token=conf["access_token"], + api_base_url=conf["base_url"] + ) def rawsend(msg): @@ -52,7 +30,7 @@ def send(chan, msg): def eventloop(chan, nick, msg): words = re.split("[ \t\s]+", msg) - if len(words) > 0 and nick != "tooter": + if len(words) > 0 and nick != botnick: if words[0] == "!toot": status = emoji.emojize(" ".join(words[1:]), use_aliases=True) print(f"{status} posted by {nick}") @@ -65,11 +43,31 @@ def eventloop(chan, nick, msg): elif words[0] == "!source": send(chan, "https://tildegit.org/ben/tooter") elif words[0] == "!botlist" or words[0] == "!toothelp": - send( - chan, - "helo i can send toots from irc: https://tilde.zone/~tildeverse - (https://tilde.zone/~tildeteam from the #team channel)", - ) + send(chan, "helo i can send toots from irc: @tildeverse@tilde.zone - from @tildeteam from the #team channel)") + + +# do setup +path = os.path.dirname(os.path.abspath(__file__)) + +with open(os.path.join(path, "config.json"), "r") as f: + config = json.load(f) + +if os.path.isfile(os.path.join(path, "account.json")): + with open(os.path.join(path, "account.json"), "r") as f: + account = json.load(f) + +botnick = config["botnick"] +channels = config["channels"] +if len(sys.argv) > 1: + for c in sys.argv[1:]: + channels.append("#" + c) + +# read masto creds +with open(os.path.join(path, "tildeverse.json"), "r") as f: + tildeverse = masto_from_json(f) +with open(os.path.join(path, "tildeteam.json"), "r") as f: + tildeteam = masto_from_json(f) if __name__ == "__main__": ircsock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) @@ -78,8 +76,7 @@ if __name__ == "__main__": rawsend(f"USER {botnick} 0 * :mastodon tooter") while 1: - ircmsg = ircsock.recv(2048).decode().split("\r\n") - for msg in ircmsg: + for msg in ircsock.recv(2048).decode().split("\r\n"): print(msg) if "PING" in msg: @@ -93,6 +90,8 @@ if __name__ == "__main__": for c in channels: rawsend(f"JOIN {c}") rawsend(f"MODE {botnick} +B") + if account is not None: + rawsend("SQUERY NickServ IDENTIFY %s %s" % (account["username"], account["password"])) m = re.match(":(?P[^ ]+)!.*PRIVMSG #(?P\w+) :(?P.*)", msg) if m and m.groupdict(): -- cgit 1.4.1