144 lines
5.1 KiB
Python
144 lines
5.1 KiB
Python
import asyncio
|
|
import discord
|
|
import sys, os
|
|
import praw
|
|
import random
|
|
import re
|
|
import json, requests
|
|
from discord.ext import commands
|
|
from sympy import latex, symbols, preview, Symbol #for LaTeX images
|
|
import youtube_dl
|
|
|
|
class General(commands.Cog):
|
|
"""Overal toegestaan."""
|
|
|
|
def __init__(self, bot):
|
|
self.bot = bot
|
|
self.voice_states = {}
|
|
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
|
|
|
|
def __check(self, ctx): #Todo: Is dit het porno kanaal?
|
|
return True
|
|
|
|
@commands.command()
|
|
@asyncio.coroutine
|
|
def huge(self, ctx, *, arg):
|
|
"""YUGE. Geeft een grote versie van de gegeven emoji terug. Werkt alleen voor custom emoji.
|
|
Bijvoorbeeld:
|
|
!huge :ancilla:
|
|
"""
|
|
id = re.search("\<\:([A-z]*)\:(\d*)\>", arg)
|
|
hugemoji = 'https://cdn.discordapp.com/emojis/' + id.group(2) + '.png'
|
|
em = discord.Embed(title=id.group(1), type='photo')
|
|
em.set_image(url=hugemoji)
|
|
try:
|
|
yield from ctx.message.delete()
|
|
except:
|
|
print("No permission to delete message")
|
|
yield from ctx.channel.send(ctx.author.mention, embed=em)
|
|
|
|
@commands.command()
|
|
@asyncio.coroutine
|
|
def tex(self, ctx, *, arg):
|
|
"""Geeft een mooi LaTeX plaatje terug.
|
|
Bijvoorbeeld:
|
|
!tex Je moeder is lelijk! $a^b b^c \\rightarrow d$
|
|
"""
|
|
preamble = "\\documentclass[10pt]{article}\\pagestyle{empty}\\usepackage[margin=1in]{geometry}\\usepackage{amsmath, amsfonts}\\begin{document}" #\\usepackage{CJKutf8}\\usepackage[T1]{fontenc}\\usepackage[english]{babel}
|
|
options = ["-T", "tight", "-z", "9", "--truecolor", "-D", "512"]
|
|
preview(r''+arg+'', viewer='file', filename='test.png', dvioptions=options, preamble=preamble)
|
|
#file = open('test.png', 'rb')
|
|
#yield from ctx.channel.send(file, filename ='test.png', content='')
|
|
try:
|
|
yield from ctx.message.delete()
|
|
except:
|
|
print("No permission to delete message")
|
|
yield from ctx.channel.send(ctx.author.mention, file=discord.File('test.png', 'tex.png'))
|
|
|
|
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)
|
|
@asyncio.coroutine
|
|
def aww(self, ctx):
|
|
""" iets schattigs... """
|
|
post = self.get_aww_post()
|
|
try:
|
|
yield from ctx.message.delete()
|
|
except:
|
|
print("No permission to delete message")
|
|
yield from ctx.channel.send(ctx.author.mention + ' ' + post.url)
|
|
|
|
@commands.command(pass_context=True)
|
|
@asyncio.coroutine
|
|
def kopieerpasta(self, ctx):
|
|
"""Een willekeurige shitpost"""
|
|
rkopieerpasta = self.r.subreddit('kopieerpasta')
|
|
post = rkopieerpasta.random()
|
|
|
|
# Subreddits kunnen de random functie uitzetten, dus dit is de fallback:
|
|
if post == None:
|
|
post = rkopieerpasta.top('month', limit=250)
|
|
listing = list(post)
|
|
random.shuffle(listing)
|
|
post = listing[0]
|
|
try:
|
|
yield from ctx.message.delete()
|
|
except:
|
|
print("No permission to delete message")
|
|
|
|
# Er is een 2000 karakter limiet wat met sommige pastas overschreden kan worden.
|
|
# eigenlijk willen we het dan opnieuw proberen maar dat is lastiger, dus maar gewoon berichtje.
|
|
if (len(post.selftext)+len(post.title)) >= 1990:
|
|
yield from ctx.channel.send('Sorry, kopieerpasta te lang. Probeer het maar opnieuw .')
|
|
else:
|
|
yield from ctx.channel.send('**'+post.title+'**```'+post.selftext+'```')
|
|
|
|
@commands.command(pass_context=True)
|
|
@asyncio.coroutine
|
|
def gif(self, ctx, yt: str, start: str="0", duration: str="5", res: str="320", fps: int=10):
|
|
""" Giffify. Tijdelijk uitgeschakeld.
|
|
"""
|
|
try:
|
|
yield from ctx.message.delete()
|
|
except:
|
|
print("No permission to delete message")
|
|
yield from ctx.channel.send(
|
|
ctx.author.mention +
|
|
"""
|
|
Welkom bij de stroopwafel GIF hotline!
|
|
Deze functionaliteit is momenteel helaas offline voor onderhoud. Gelukkig is vergelijkbare functionaliteit ook elders beschikbaar:
|
|
Op <https://gifrun.com/> kunt u bijvoorbeeld via een web-interface gifjes maken van youtube-filmpjes. Geavanceerde gebruikers kunnen u ook <https://youtube-dl.org/> proberen, waarna u gifjes kan genereren via bijvoorbeeld <https://ezgif.com/>.
|
|
|
|
Namens de directie van Stroopwafel B.V. onze excuses voor dit ongemak.""")
|
|
|
|
def get_playlist_json(self):
|
|
return requests.get(self.muzak_url + '/stroopwafel')
|
|
|
|
@commands.command(pass_context=True)
|
|
@asyncio.coroutine
|
|
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'])
|
|
yield from ctx.channel.send(msg)
|
|
|
|
@commands.command(pass_context=True, hidden=True)
|
|
@asyncio.coroutine
|
|
def reboot(self, ctx, password=""):
|
|
""" Reboot.. """
|
|
if password == os.getenv("STROOP_RESET_PASSWORD"):
|
|
yield from ctx.channel.send("Rebooting.. brb!")
|
|
os.execv(sys.executable, ['python3'] + sys.argv)
|
|
else:
|
|
yield from ctx.channel.send(ctx.author.mention + " What's the magic word?")
|