import sys, os import pydle import monero import requests import random import config class IRCBot(pydle.Client): async def on_connect(self): for room in config.ROOMS: await self.join(room) async def on_message(self, target, source, message): if source == self.nickname: return else: print(f"Target: {target} - Source: {source} - Message: {message}") if self.nickname in message: imgs = [ "https://i.redd.it/f2z7ms4ai8751.png", "https://i.redd.it/j207p3l093751.png", "https://i.redd.it/j3dq88hrmn651.jpg", "https://i.redd.it/w24t2jwo6h651.jpg", "https://i.redd.it/vi6bmspgl5651.png", "https://i.redd.it/m392y5szvx551.jpg", "https://i.redd.it/t59v1s3msu551.jpg", "https://i.redd.it/x5ueaie8hs551.jpg", "https://i.redd.it/3je54bq091551.png", ] await self.message(target, f"Sup. I don't do a whole lot yet. Have a picture: {random.choice(imgs)}") # elif message.startswith("!proposal "): # split_msg = message.split() # param = split_msg[1] # print(param) # print(split_msg) # if isinstance(param, int): # r = requests.get("https://funding.wownero.com/api/1/proposals?status=2") # if r.status_code == 200: # found = False # for prop in r.json()["data"]: # if prop["id"] == param: # found = True # await self.message(target, f"{prop}") # if not found: # await self.message(target, f"There's no proposal with that ID") # else: # await self.message(target, f"I didn't get a valid response from the WFS API. Debug: {r.content}") # else: # await self.message(target, f"You're supposed to provide a number ya dingus!") elif message.startswith("!proposals"): r = requests.get("https://funding.wownero.com/api/1/proposals?status=2") if r.status_code == 200: proposals = [] print(r.json()) print(r.content) print(r.json()['data']) for prop in r.json()["data"]: print(prop) proposals.append(f"{prop['id']}. {prop['headline']}") print(proposals) await self.message(target, f"Here are the proposals needing fundings: {', '.join(proposals)}") else: await self.message(target, f"I didn't get a valid response from the WFS API. Debug: {r.content}") # isadmin = await self.is_admin(source) # print(isadmin) async def is_admin(self, nickname): admin = False if nickname in config.ADMIN_NICKNAMES: info = await self.whois(nickname) admin = info['identified'] print("info: ", info) return admin if __name__ == '__main__': try: print(f"[+] Starting IRC bot connecting to {config.IRC_HOST}") client = IRCBot( nickname=config.BOT_NICKNAME, sasl_mechanism = "EXTERNAL", tls_client_cert = "./freenode.pem", ) client.run(config.IRC_HOST, tls=True, tls_verify=False) except KeyboardInterrupt: print('Adios') try: sys.exit(0) except SystemExit: os._exit(0)