Files
stroopwafel/General.py
T
mark cde205aad7
continuous-integration/drone Build is passing
continuous-integration/drone/push Build is passing
pollen klachtencijfer
2023-06-13 21:05:22 +02:00

123 lines
4.1 KiB
Python

import discord
import os
import praw
import random
import re
import json, requests
import warnings
from discord.ext import commands
class General(commands.Cog):
"""Overal toegestaan."""
def __init__(self, bot):
self.bot = bot
self.muzak_url = 'https://hdcon-muzak.herokuapp.com'
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 playlist(self, ctx):
"""HDcon2021 playlist"""
data = json.loads(self.get_playlist_json().content)
msg = 'Stemmen en nomineren kan hier: {}\n'.format(self.muzak_url)
msg += '*Er zijn al {} nummers genomineerd*\n'.format(data['stemCount'])
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')