2020-07-10 08:24:02 +00:00
|
|
|
import sys, os
|
2020-07-08 07:58:30 +00:00
|
|
|
import pydle
|
|
|
|
import monero
|
2020-07-10 08:24:02 +00:00
|
|
|
import requests
|
|
|
|
import random
|
2020-07-08 07:58:30 +00:00
|
|
|
|
|
|
|
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
|
2020-07-10 08:24:02 +00:00
|
|
|
else:
|
|
|
|
print(f"Target: {target} - Source: {source} - Message: {message}")
|
2020-07-08 07:58:30 +00:00
|
|
|
|
2020-07-10 08:24:02 +00:00
|
|
|
if self.nickname in message:
|
2020-07-11 05:01:41 +00:00
|
|
|
await self.message(target, f"Sup. I don't do a whole lot yet. Have a picture: {random.choice(config.IMAGES)}")
|
2020-07-10 08:24:02 +00:00
|
|
|
# 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!")
|
2020-07-11 05:01:41 +00:00
|
|
|
elif source == config.TELEGRAM_BRIDGE_NAME and config.TELEGRAM_JOIN_SUBSTR in message:
|
|
|
|
# ex = 'DudeMan (@DudeManBro) has joined the Telegram Group!'
|
|
|
|
strip_last = message.split()[1][:-1]
|
|
|
|
strip_first = strip_last[1:]
|
|
|
|
await self.message(target, f"WTF is up {strip_first}! Stay tuned for more cool ass bot shit goin down!")
|
|
|
|
elif message.startswith("!supply"):
|
|
|
|
r = requests.get("https://funding.wownero.com/api/1/wow/supply")
|
|
|
|
if r.status_code == 200:
|
|
|
|
data = r.json()["data"]
|
|
|
|
await self.message(target, f"The current total supply of WOW is {data}")
|
|
|
|
else:
|
|
|
|
await self.message(target, f"I didn't get a valid response from the WFS API. Debug: {r.content}")
|
2020-07-10 08:24:02 +00:00
|
|
|
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}")
|
2020-07-08 07:58:30 +00:00
|
|
|
|
|
|
|
# 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
|
|
|
|
|
|
|
|
|
2020-07-10 08:24:02 +00:00
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
try:
|
2020-07-11 05:01:41 +00:00
|
|
|
print(f"[+] Starting IRC bot connecting to {config.IRC_HOST}...\n")
|
2020-07-10 08:24:02 +00:00
|
|
|
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:
|
2020-07-11 05:01:41 +00:00
|
|
|
print(' - Adios')
|
2020-07-10 08:24:02 +00:00
|
|
|
try:
|
|
|
|
sys.exit(0)
|
|
|
|
except SystemExit:
|
|
|
|
os._exit(0)
|