From d67d4b25cbf24f2ac3190b6bf03e78c10334ca0d Mon Sep 17 00:00:00 2001 From: Matt Arnold Date: Thu, 20 Feb 2025 09:18:03 -0500 Subject: new year new bot --- client.py | 65 ++++++++++++++++++++++++++++++++++++--------------------------- 1 file changed, 37 insertions(+), 28 deletions(-) (limited to 'client.py') diff --git a/client.py b/client.py index a3ce217..d1e7474 100644 --- a/client.py +++ b/client.py @@ -1,6 +1,6 @@ # Part of rabbitears See LICENSE for permissions # Copyright (C) 2022 Matt Arnold -from IRC import * +from IRC import IRCBot, IRCError, printred import os import random import ssl @@ -8,53 +8,64 @@ import socket import sys import irctokens import json +import re -LINEEND = '\r\n' +horse_counter = 0 +trigger_regex = re.compile(".*frog.*") +LINEEND = "\r\n" # IRC Config config = None -with open('config.json') as f: +with open("config.json") as f: jld = f.read() config = json.loads(jld) - -# Need to pass the IRCBot class a socket the reason it doesn't do this itself is +# Need to pass the IRCBot class a socket the reason it doesn't do this itself is # so you can set up TLS or not as you need it # These provide good defaults. But your milage may vary oursock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) context = ssl.SSLContext() context.check_hostname = False context.verify_mode = ssl.CERT_NONE -oursock = context.wrap_socket(oursock, server_hostname=config['hostname']) +oursock = context.wrap_socket(oursock, server_hostname=config["hostname"]) irc = IRCBot(oursock) -irc.connect(config['hostname'], - config['port'], - config['channel'], - config['nick'], - config['nickpass']) +irc.connect( + config["hostname"], + config["port"], + config["channel"], + config["nick"], + config["nickpass"], +) + def generate_response(person, message): msg = message.strip(LINEEND) - if 'cool.person' in person and msg.lower() == "hello botley": - return "Greetings Master" - elif msg.lower() == "hello": - return "Greetings Human!" - elif "Ground Control to Major Tom" in msg: - return "Put your helmet on!" - elif "Ziggy Stardust" in msg: - return "Looks good in leather pants" - else: - return None + if "horse" in person: + global horse_counter + horse_counter += 1 + if horse_counter % 50 == 0: + return "Ribbit, Frog on a horse, nobody knows where they'll go" + return "Ribbit, Frog on the floor where did she come from " + if trigger_regex.match(msg.lower()): + return "ribbit ribbit " + if "dozens" in person: + dice = random.randint(1, 20) + if dice <= 7: + return "watch it horse you almost clobbered me" + if "acdw" in person: + dice = random.randint(1, 12) + if dice == 1 or dice == 12: + return "I've been chilling in the basement for a minute" + while True: try: - text = irc.get_response() - print(text[0],text[1],text[2]) - if text[1] == 'PRIVMSG' and text[2][0] == config['channel']: - r = generate_response(text[0],text[2][1]) + print(text[0], text[1], text[2]) + if text[1] == "PRIVMSG" and text[2][0] == config["channel"]: + r = generate_response(text[0], text[2][1]) if r is not None: - irc.send_privmsg(config['channel'],r) + irc.send_privmsg(config["channel"], r) except KeyboardInterrupt: irc.send_quit("Ctrl-C Pressed") msg = oursock.recv(4096) @@ -63,5 +74,3 @@ while True: except IRCError as e: printred(e) sys.exit(1) - - -- cgit 1.4.1-2-gfad0