Files
stroopwafel/General.py
T
2023-08-16 14:53:10 +02:00

142 lines
5.0 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"
msg += f"Nog even geduld; Vanaf {open} is de muzak open en kun je naar hartelust stemmen en nomineren.\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?;", json.loads([x for x in response.text.splitlines() if "var options =" in x][0].partition("=")[2].strip(";, "))["data"]["csv"])[-1].strip(";"))
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')