233 lines
7.7 KiB
Python
233 lines
7.7 KiB
Python
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, 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)) |