forked from zuckerberg/dailybot
dailybot as a nix flake
This commit is contained in:
44
src/art.py
Normal file
44
src/art.py
Normal file
@@ -0,0 +1,44 @@
|
||||
import requests
|
||||
import random
|
||||
import re
|
||||
|
||||
host = "https://collectionapi.metmuseum.org/public/collection/v1/"
|
||||
|
||||
def getArt(term):
|
||||
# get the list of artwork
|
||||
r = requests.get(host + 'objects')
|
||||
objects = r.json()['objectIDs']
|
||||
|
||||
searchObjects = objects
|
||||
if term:
|
||||
query = {'q': term, 'hasImages': 'true'}
|
||||
r = requests.get(host + 'search', params=query)
|
||||
searchObjects = r.json()['objectIDs']
|
||||
|
||||
if not searchObjects or len(searchObjects) == 0:
|
||||
return None
|
||||
|
||||
tries = 10
|
||||
while tries > 0:
|
||||
r = requests.get(host + 'objects/' + str(random.choice(searchObjects)))
|
||||
j = r.json()
|
||||
if j['primaryImage']:
|
||||
return j
|
||||
tries -= 1
|
||||
return None
|
||||
|
||||
class Module:
|
||||
def __init__(self):
|
||||
self.commands = ['art']
|
||||
self.manual = {
|
||||
"desc": ("Post random art from metmuseum's api"),
|
||||
"bot_commands": {"art": {"usage": lambda x: f"{x}art"}}
|
||||
}
|
||||
|
||||
def main(i, irc):
|
||||
msg = getArt("")
|
||||
if msg is None:
|
||||
msg = "No result"
|
||||
else:
|
||||
msg = '"' + msg['title'] + '" ' + msg['objectDate'] + ' ' + msg['primaryImage']
|
||||
irc.privmsg(i.channel, msg)
|
||||
44
src/karma.py
Normal file
44
src/karma.py
Normal file
@@ -0,0 +1,44 @@
|
||||
import re
|
||||
|
||||
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)
|
||||
70
src/radio.py
Normal file
70
src/radio.py
Normal file
@@ -0,0 +1,70 @@
|
||||
import requests
|
||||
|
||||
host = "http://172.16.100.2:5500/"
|
||||
radioUrl = "https://radio.neet.space/stream.mp3"
|
||||
|
||||
class Module:
|
||||
def __init__(self):
|
||||
self.commands = ["dailyradio",
|
||||
"play",
|
||||
"current",
|
||||
"skip",
|
||||
"queue",
|
||||
"listeners"]
|
||||
self.manual = {
|
||||
"desc": "Stream and radio information for dailyradio",
|
||||
"bot_commands": {
|
||||
"dailyradio": {"usage": lambda x: f"{x}dailyradio",
|
||||
"info": "Display the dailyradio stream url."},
|
||||
"play": {"usage": lambda x: f"{x}play URL",
|
||||
"info": "plays the url on the radio."},
|
||||
"current": {"usage": lambda x: f"{x}current",
|
||||
"info": "Gets what's currently playing on the radio."},
|
||||
"skip": {"usage": lambda x: f"{x}skip",
|
||||
"info": "Skips what's currently playing on the radio."},
|
||||
"queue": {"usage": lambda x: f"{x}queue",
|
||||
"info": "Gets the radio's play queue"},
|
||||
"listeners": {"usage": lambda x: f"{x}listeners",
|
||||
"info": "Returns the number of clients listening to the radio"}
|
||||
}
|
||||
}
|
||||
|
||||
def dailyradio(i, irc):
|
||||
irc.privmsg(i.channel, radioUrl)
|
||||
|
||||
def play(i, irc):
|
||||
if not i.msg_nocmd:
|
||||
m = f"Usage: {i.cmd_prefix}{i.cmd} URL"
|
||||
irc.privmsg(i.channel, m)
|
||||
return
|
||||
pload = {'url': i.msg_nocmd}
|
||||
r = requests.post(host+"play", data = pload)
|
||||
irc.privmsg(i.channel, r.text)
|
||||
|
||||
def current(i, irc):
|
||||
r = requests.get(host+"current")
|
||||
irc.privmsg(i.channel, r.text)
|
||||
|
||||
def skip(i, irc):
|
||||
r = requests.post(host+"skip")
|
||||
irc.privmsg(i.channel, r.text)
|
||||
|
||||
def queue(i, irc):
|
||||
r = requests.get(host+"queue")
|
||||
irc.privmsg(i.channel, r.text)
|
||||
|
||||
def listeners(i, irc):
|
||||
r = requests.get(host+"listeners")
|
||||
irc.privmsg(i.channel, r.text)
|
||||
|
||||
callbacks = {
|
||||
"dailyradio": dailyradio,
|
||||
"play": play,
|
||||
"current": current,
|
||||
"skip": skip,
|
||||
"queue": queue,
|
||||
"listeners": listeners
|
||||
}
|
||||
|
||||
def main(i, irc):
|
||||
callbacks[i.cmd](i, irc)
|
||||
Reference in New Issue
Block a user