import asyncio import discord from discord.ext import commands from urllib import request import requests import oauth2 as oauth import json, requests from datetime import datetime import sys import os class Shitpost(object): """Schijtpaal commando's. Alleen bruikbaar in de daarvoor toegewezen schijtpaal kanalen.""" def __init__(self, bot): self.bot = bot self.voice_states = {} def __check(self, ctx): #Todo: Is dit het shitpost kanaal? return True @commands.command(pass_context=True, hidden=False) @asyncio.coroutine def giethetaloan(self, ctx): """Giet het al oan? Ja of Nee.. kom op nou. """ #We halen dit op van de twitter account @gietitaloan die vertrouwen wij als de ultieme waarheid #hahaha geheime tokens in de code hahahaha TODO consumer = oauth.Consumer(key="eUotijxUEcTVpegNCIzEqz0be", secret="Opj95FAhRkpgVpo61PEJcConvYHgAk7TlouETk2NaSh6dvhCLu") client = oauth.Client(consumer) resp, content = client.request("https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name=gietitaloan&count=1", "GET") #TODO kijken of resp iets zinnigs teruggeeft.. of iets doen met een try of catch ofzow content_str = content.decode('utf-8') #converteren naar str voor welke stomme reden dan ook answer = json.loads(content_str)[0]["text"] #inhoud van de tweet answer = answer.lower() reactie = "" if 'ja' in answer: if 'nee' in answer: reactie += 'Het is onduidelijk..' else: reactie += 'Het giet oan!' else: if 'nee' in answer: reactie += 'Nee helaas..' yield from ctx.channel.send(ctx.author.mention + ' ' + reactie) @commands.command(pass_context=True, hidden=True) @asyncio.coroutine def mark(self, ctx, boven: str, onder: str): """Maakt een mark meem. Bijvoorbeeld: !mark \"je moeder\" \"is een hoer\" """ params = dict( template_id = '112898841', #de marku username = 'Stroopwafel', password = 'ruyter118', text0 = boven, text1 = onder ) #self.bot.say("deed ik het ding?") resp = requests.get(url='https://api.imgflip.com/caption_image', params=params) #todo check for success photourl = resp.json()['data']['url'] em = discord.Embed(title='De Mark heeft gesproken.', type='photo') em.set_image(url=photourl) 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(pass_context=True, hidden=True) @asyncio.coroutine def eriku(self, ctx, boven: str, onder: str): """Maakt een erik meem. Bijvoorbeeld: !eriku \"je moeder\" \"is een hoer\" """ params = dict( template_id = '93296473', #de eriku username = 'Stroopwafel', password = 'ruyter118', text0 = boven, text1 = onder ) #self.bot.say("deed ik het ding?") resp = requests.get(url='https://api.imgflip.com/caption_image', params=params) #todo check for success photourl = resp.json()['data']['url'] em = discord.Embed(title='De Eriku heeft gesproken. Prijs hem!', type='photo') em.set_image(url=photourl) 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(pass_context=True) @asyncio.coroutine def relevantxkcd(self, ctx, query: str): """There is always a relevant XKCD Bijvoorbeeld: !relevantxkcd python """ #self.bot.say("deed ik het ding?") response = requests.get("https://relevantxkcd.appspot.com/process?action=xkcd&query=" + query) splitResponse = response.text.split(" ") photoUrl = "http://www.explainxkcd.com" + splitResponse[3] print(photoUrl) em = discord.Embed(title='', type='photo') em.set_image(url=photoUrl) 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(pass_context=True, hidden=True) @asyncio.coroutine def zout(self, ctx, boven: str, onder: str): """Maakt een martijn-zout meem. Bijvoorbeeld: !zout \"je moeder\" \"is een hoer\" """ params = dict( template_id = '116231806', #de martijn username = 'Stroopwafel', password = 'ruyter118', text0 = boven, text1 = onder ) #self.bot.say("deed ik het ding?") resp = requests.get(url='https://api.imgflip.com/caption_image', params=params) #todo check for success photourl = resp.json()['data']['url'] em = discord.Embed(title='De Martijn heeft gesproken.', type='photo') em.set_image(url=photourl) 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(pass_context=True, hidden=True) @asyncio.coroutine def nihao(self,ctx): #yield from self.bot.say("Kankerlauw") yield from ctx.channel.send("kankerlauw") @commands.command(pass_context=True) @asyncio.coroutine def tijd(self, ctx, *args): """Vertelt je hoe laat het is.. Misschien geeft het ook wel een leuke meem terug. Wie weet. Probeer het eens op verschillende tijdstippen. """ time=datetime.now().strftime('%H%M') for argument in args: time = argument filepath = '' #filejpg = './tijd/' + time + '.jpg' #filepng = './tijd/' + time + '.png' filejpg = os.path.join('tijd', time) + '.jpg' filepng = os.path.join('tijd', time) + '.png' if os.path.isfile(filejpg): filepath = filejpg elif os.path.isfile(filepng): filepath = filepng try: yield from ctx.message.delete() except: print("No permission to delete message") if filepath is not '': #file = open(filepath, 'rb') #yield from self.bot.upload(file, filename = filepath) yield from ctx.channel.send(ctx.author.mention + ' Het is nu ' + datetime.now().strftime('%H:%M'), file=discord.File(filepath, 'tijd.png')) else: yield from ctx.channel.send(ctx.author.mention + ' Het is nu ' + datetime.now().strftime('%H:%M')) #Used by function weer() @commands.command(pass_context=True) @asyncio.coroutine def weer(self, ctx, location="Leiden"): """Vertelt je het weer. Omdat je te lui bent om naar buiten te kijken. Oant Moarn! """ weatherIconTranslation = { "zonnig" : ":sun_with_face:", "bliksem" : ":cloud_lightning:", "regen" : ":cloud_rain:", "buien" : ":umbrella:", "hagel" : ":cloud_snow:", "mist" : ":white_large_square:", "sneeuw" : ":cloud_snow:", "bewolkt" : ":white_sun_cloud:", "halfbewolkt" : ":partly_sunny:", "zwaarbewolkt" : ":cloud:", "nachtmist" : ":ghost:", "helderenacht" : ":first_quarter_moon_with_face:", "wolkennacht" : ":cloud:" } if(location == ""): location = "Leiden" url = "http://weerlive.nl/api/json-10min.php?locatie=" + location response = requests.get(url) #Oant Moarn if (response.ok): wData = json.loads(response.content.decode('utf-8')) message = "" if (wData["liveweer"][0]["alarm"] == "1"): message += "\n\n" + "HOLY SHIT :scream: ER IS EEN WEERALARM!!!1!: " message += wData["liveweer"][0]["alarmtxt"] + ". Hide yo kids, hide yo wife! \n\n" message += weatherIconTranslation[ wData["liveweer"][0]["image"] ] message += " Het is " + wData["liveweer"][0]["temp"] + " graden " message += "en het weer is: " + wData["liveweer"][0]["samenv"] + ". " message += "De verwachting: " + wData["liveweer"][0]["verw"] message += "\n\nMorgen: " + weatherIconTranslation[ wData["liveweer"][0]["d1weer"] ] message += " " + wData["liveweer"][0]["d1tmin"] + " tot " message += wData["liveweer"][0]["d1tmax"] + " graden. " if (wData["liveweer"][0]["d1neerslag"] == "0"): message += "Geen neerslag. " else: message += "Kans op neerslag: " + wData["liveweer"][0]["d1neerslag"] + "%. " if (int(wData["liveweer"][0]["d1windk"]) > 5): message += "Windkracht " + wData["liveweer"][0]["d1windk"] + ". Blow it." message += "\n\nOvermorgen: "+ weatherIconTranslation[ wData["liveweer"][0]["d2weer"] ] message += " " + wData["liveweer"][0]["d2tmin"] + " tot " message += wData["liveweer"][0]["d2tmax"] + " graden. " if (wData["liveweer"][0]["d2neerslag"] == "0"): message += "Geen neerslag. " else: message += "Kans op neerslag: " + wData["liveweer"][0]["d2neerslag"] + "%. " if (int(wData["liveweer"][0]["d2windk"]) > 5): message += "Windkracht " + wData["liveweer"][0]["d2windk"] + ". " message += "\n\nOant Moarn!" yield from ctx.channel.send(message) else: print("API ERROR. :robot:") def setup(bot): bot.add_cog(Shitpost(bot))