41c2dc17d1
Welke klapmongool heeft dat parsen in een one-liner gedaan? Man man man.
144 lines
5.1 KiB
Python
144 lines
5.1 KiB
Python
import discord
|
|
import os
|
|
import praw
|
|
import random
|
|
import re
|
|
import json, requests
|
|
import warnings
|
|
from datetime import date, timedelta
|
|
from discord.ext import commands
|
|
|
|
class General(commands.Cog):
|
|
"""Overal toegestaan."""
|
|
|
|
def __init__(self, bot):
|
|
self.bot = bot
|
|
self.muzak_url = 'https://muzak.hoekveen.net'
|
|
self.r = praw.Reddit(
|
|
user_agent='StroopwafelBot',
|
|
client_secret=os.getenv("STROOP_REDDIT_SECRET"),
|
|
client_id=os.getenv("STROOP_REDDIT_ID")
|
|
)
|
|
self.r.read_only = True
|
|
warnings.simplefilter("ignore")
|
|
|
|
def get_emoji_embed(self, tag: str):
|
|
emoji = re.search(".*\<\:([A-z]*)\:(\d*)\>.*", tag)
|
|
embed = discord.Embed(title=emoji.group(1), type='photo')
|
|
hugemoji = 'https://cdn.discordapp.com/emojis/' + emoji.group(2) + '.png'
|
|
embed.set_image(url=hugemoji)
|
|
return embed
|
|
|
|
@commands.command()
|
|
async def huge(self, ctx, *, arg):
|
|
"""YUGE. Geeft een grote versie van de gegeven emoji terug. Werkt alleen voor custom emoji.
|
|
Bijvoorbeeld:
|
|
!huge :ancilla:
|
|
"""
|
|
em = self.get_emoji_embed(arg)
|
|
try:
|
|
await ctx.message.delete()
|
|
except:
|
|
print("No permission to delete message")
|
|
await ctx.channel.send(ctx.author.mention, embed=em)
|
|
|
|
def get_aww_post(self):
|
|
raww = self.r.subreddit('aww+catloaf+tuckedinkitties+babyelephantgifs+babybigcatgifs+blep+holdmynip+gingerkitty+cathighfive+catsstandingup+catsareassholes+eyebleach')
|
|
listing = list(raww.top(time_filter='month'))
|
|
return random.choice(listing)
|
|
|
|
@commands.command(pass_context=True)
|
|
async def aww(self, ctx):
|
|
""" iets schattigs... """
|
|
post = self.get_aww_post()
|
|
try:
|
|
await ctx.message.delete()
|
|
except:
|
|
print("No permission to delete message")
|
|
await ctx.channel.send(ctx.author.mention + ' ' + post.url)
|
|
|
|
def get_kopieerpasta(self):
|
|
rkopieerpasta = self.r.subreddit('kopieerpasta')
|
|
post = rkopieerpasta.random()
|
|
|
|
# Subreddits kunnen de random functie uitzetten, dus dit is de fallback:
|
|
if post == None:
|
|
listing = list(rkopieerpasta.top('month', limit=250))
|
|
post = random.choice(listing)
|
|
|
|
return post
|
|
|
|
@commands.command(pass_context=True)
|
|
async def kopieerpasta(self, ctx):
|
|
"""Een willekeurige shitpost"""
|
|
post = self.get_kopieerpasta()
|
|
print(post.url)
|
|
ATTEMPTS = 10
|
|
a = 0
|
|
while len(post.selftext + post.title) >= 1990 and a < ATTEMPTS:
|
|
post = self.get_kopieerpasta()
|
|
print(post.url)
|
|
a += 1
|
|
try:
|
|
await ctx.message.delete()
|
|
except:
|
|
print("No permission to delete message")
|
|
|
|
if len(post.selftext + post.title) < 1990:
|
|
await ctx.channel.send('**'+post.title+'**```'+post.selftext+'```')
|
|
else:
|
|
await ctx.channel.send("Geen kopieerpasta voor jou vandaag.")
|
|
|
|
def get_playlist_json(self):
|
|
return requests.get(self.muzak_url + '/stroopwafel')
|
|
|
|
@commands.command(pass_context=True)
|
|
async def muzak(self, ctx):
|
|
"""HD muzak playlist"""
|
|
data = json.loads(self.get_playlist_json().content)
|
|
msg = ""
|
|
open = date.fromisoformat(data['openDate'])
|
|
nom = date.fromisoformat(data['deadlineNominations'])
|
|
vote = date.fromisoformat(data['deadlineVoting'])
|
|
today = date.today()
|
|
if open > today:
|
|
msg += "Het stemmen is nog niet geopend voor dit jaar.\n"
|
|
days = (open-today).days
|
|
msg += f"Nog {days} nachtjes slapen!\n"
|
|
msg += f"Vanaf {open} is de muzak open en kun je naar hartelust stemmen en nomineren op {self.muzak_url}.\n"
|
|
elif today > nom and today > vote and (today - vote) < timedelta(days=8):
|
|
msg += "Het nomineren en stemmen is alweer voorbij.\n"
|
|
msg += "Je zult nog even geduld moeten hebben tot de lijst klaar is.\n"
|
|
elif today > nom and today > vote:
|
|
msg += "De lijst is al helemaal klaar. Goed gedaan jongens. Applausje voor jezelf."
|
|
else:
|
|
if open == today:
|
|
msg += "Jawel mensen! Vanaf vandaag mag het stemmen beginnen!\n"
|
|
msg += f"Stemmen en nomineren kan hier: {self.muzak_url}\n"
|
|
msg += f"*Er zijn al {data['stemCount']} nummers genomineerd!*\n"
|
|
msg += f"Nomineren kan tot {nom}, stemmen kan tot {vote}.\n"
|
|
msg += "\nIk hoop dat jullie allemaal je beste nummers insturen!"
|
|
await ctx.channel.send(msg)
|
|
|
|
@commands.command(pass_context=True)
|
|
async def pollen(self, ctx):
|
|
"Hoe veel last van pollen kun je verwachten?"
|
|
poll = 'https://app.everviz.com/embed/apyvera/' # Thanks hooikoortsradar
|
|
response = requests.get(poll)
|
|
if response:
|
|
# one-liner want eet stront
|
|
cijfer = float(re.findall(r";\d\.?\d?\n", json.loads([x for x in response.text.splitlines() if "var options =" in x][0].partition("=")[2].strip(";, "))["data"]["csv"])[-1].strip(";\n"))
|
|
msg = ""
|
|
if cijfer < 3:
|
|
msg = f"Nou, het lijkt goed te gaan. Recentelijk gaven mensen hun klachten maar een {cijfer}. Lekker!"
|
|
elif cijfer < 6:
|
|
msg = f"Het lijkt allemaal mee te vallen. Men gaf hun klachten een {cijfer} deze week. Moet te doen zijn."
|
|
elif cijfer < 7.5:
|
|
msg = f"Ai. Het gaat lekker met de pollen, maar het ergste moet nog komen of is al geweest. Klachtencijfer van {cijfer}; Sterkte alvast."
|
|
else:
|
|
msg = f"Balen dit. Klachtencijfer van {cijfer}, dus bekijk het maar. Joe."
|
|
await ctx.channel.send(ctx.author.mention + ' ' + msg)
|
|
else:
|
|
await ctx.channel.send(ctx.author.mention + ' Er lijkt even geen klachtencijfer beschikbaar te zijn. Probeer het later nog eens')
|
|
|