mirror of https://github.com/ekimekim/wubloader
Import prizebot
parent
9e8cb7bee8
commit
3b1c837bfa
@ -0,0 +1,59 @@
|
||||
|
||||
import json
|
||||
import time
|
||||
|
||||
import argh
|
||||
import requests
|
||||
|
||||
from .config import get_config
|
||||
from .zulip import Client
|
||||
|
||||
|
||||
def get_prizes(type):
|
||||
resp = requests.get("https://desertbus.org/wapi/prizes/{}".format(type))
|
||||
resp.raise_for_status()
|
||||
return resp.json()['prizes']
|
||||
|
||||
|
||||
def send_message(client, prize, test=False, giveaway=False):
|
||||
message = "[{title}](https://desertbus.org/prize/{id}) won by {bidder} - raised ${bid:.2f}".format(**prize)
|
||||
if giveaway:
|
||||
message += "\n@*editors* Remember to go back and edit the giveaway video"
|
||||
if test:
|
||||
print(message)
|
||||
else:
|
||||
client.send_to_stream("bot-spam", "Prize Winners", message)
|
||||
|
||||
|
||||
def main(config_file, test=False, all=False, once=False, interval=60):
|
||||
"""
|
||||
Config:
|
||||
url, email, api_key: zulip creds
|
||||
state: path to state file
|
||||
"""
|
||||
config = get_config(config_file)
|
||||
with open(config['state']) as f:
|
||||
# state is {id: last seen state}
|
||||
state = json.load(f)
|
||||
client = Client(config['url'], config['email'], config['api_key'])
|
||||
while True:
|
||||
start = time.time()
|
||||
for type in ('live_auction', 'silent_auction', 'giveaway'):
|
||||
prizes = get_prizes(type)
|
||||
for prize in prizes:
|
||||
id = str(prize['id'])
|
||||
if prize['state'] == "sold" and (all or state.get(id, "sold") != "sold"):
|
||||
send_message(client, prize, test=test, giveaway=(type == "giveaway"))
|
||||
state[id] = prize['state']
|
||||
if not test:
|
||||
with open(config['state'], 'w') as f:
|
||||
f.write(json.dumps(state) + '\n')
|
||||
if once:
|
||||
break
|
||||
remaining = start + interval - time.time()
|
||||
if remaining > 0:
|
||||
time.sleep(remaining)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
argh.dispatch_command(main)
|
Loading…
Reference in New Issue