mirror of https://github.com/stijndcl/didier
164 lines
6.6 KiB
Python
164 lines
6.6 KiB
Python
from data import constants
|
|
import datetime
|
|
from decorators import help
|
|
import discord
|
|
from discord.ext import commands
|
|
from enums.help_categories import Category
|
|
from functions import checks, clap, mock, sunrise, timeFormatters
|
|
import pytz
|
|
from requests import get
|
|
import time
|
|
import urllib.parse
|
|
|
|
|
|
# Random things that are usually oneliners & don't belong in any other categories
|
|
class Oneliners(commands.Cog):
|
|
|
|
def __init__(self, client):
|
|
self.client = client
|
|
self.utilsCog = self.client.get_cog('Utils')
|
|
|
|
# Don't allow any commands to work when locked
|
|
def cog_check(self, ctx):
|
|
return not self.client.locked
|
|
|
|
@commands.command(name="Age", usage="[Formaat]*")
|
|
@help.Category(category=Category.Didier)
|
|
async def age(self, ctx, specification=None):
|
|
allowedSpecifications = ["d", "days", "m", "months", "w", "weeks", "y", "years"]
|
|
|
|
if specification is not None and specification.lower() not in allowedSpecifications:
|
|
await ctx.send("**{}** is geen geldig formaat.".format(specification))
|
|
return
|
|
|
|
if specification is None:
|
|
timeString = timeFormatters.diffYearBasisString(constants.creationDate)
|
|
else:
|
|
ageSeconds = round(time.time()) - constants.creationDate
|
|
timeFormat = timeFormatters.getFormat(specification)
|
|
timeString = str(timeFormatters.timeIn(ageSeconds, timeFormat)[0])
|
|
timeString += " " + timeFormatters.getPlural(int(timeString), timeFormat)
|
|
await ctx.send("Didier is **{}** oud.".format(timeString))
|
|
|
|
@commands.command(name="Clap", usage="[Tekst]")
|
|
@help.Category(category=Category.Other)
|
|
async def clap(self, ctx, *args):
|
|
await ctx.send(clap.clap("".join(args)))
|
|
await self.utilsCog.removeMessage(ctx.message)
|
|
|
|
@commands.command(name="Reverse", aliases=["Rev"], usage="[Tekst]")
|
|
@commands.check(checks.allowedChannels)
|
|
@help.Category(category=Category.Other)
|
|
async def reverse(self, ctx, *, args):
|
|
await ctx.send(args[::-1])
|
|
|
|
@commands.command(name="Government", aliases=["Gov", "Regering"])
|
|
@commands.check(checks.allowedChannels)
|
|
@help.Category(category=Category.Other)
|
|
async def government(self, ctx):
|
|
now = timeFormatters.dateTimeNow()
|
|
newGov = datetime.datetime.fromtimestamp(1601539200, tz=pytz.timezone("Europe/Brussels"))
|
|
delta = now - newGov
|
|
zin = "Na **494** dagen is er weer een regering, **47** dagen te vroeg om het record te breken. Very sad times.\nMAAR hoelang denk je dat de nieuwe regering het gaat volhouden? Place your bets! Momenteel zitten we aan **{}** dag{}.".format(
|
|
delta.days, "en" if delta.days != 1 else ""
|
|
)
|
|
# now = int(time.time())
|
|
# valVorige = 1545350400
|
|
# verkiezingen = 1558828800
|
|
# valDiff = now - valVorige
|
|
# verkiezingenDiff = now - verkiezingen
|
|
# zin = (
|
|
# "We zitten al **%d** dagen zonder regering, en proberen al **%d** dagen een nieuwe te vormen.\nHet "
|
|
# "huidige wereldrecord is "
|
|
# "**541** dagen, dus nog **%d** dagen tot we het gebroken hebben." %
|
|
# (valDiff // 86400, verkiezingenDiff // 86400, 541 - int(verkiezingenDiff // 86400)))
|
|
await ctx.send(zin)
|
|
|
|
@commands.command()
|
|
async def inject(self, ctx):
|
|
await ctx.send("**{}** heeft wat code geïnjecteerd.".format(ctx.author.display_name))
|
|
|
|
@commands.command(name="Mock", usage="[Tekst]")
|
|
@help.Category(category=Category.Other)
|
|
async def mock(self, ctx, *text):
|
|
await ctx.channel.send("{} - **{}**".format(mock.mock(" ".join(text)), ctx.author.display_name))
|
|
await self.utilsCog.removeMessage(ctx.message)
|
|
|
|
@commands.command(name="Molest", usage="[@Persoon]")
|
|
async def molest(self, ctx):
|
|
if constants.didierId in ctx.message.content:
|
|
await ctx.send("Nee.")
|
|
elif str(ctx.author.id) in ctx.message.content or ctx.message.content == "molest me":
|
|
await ctx.send("I didn't know you swing that way, " + ctx.author.display_name)
|
|
elif "171671190631481345" in ctx.message.content:
|
|
await ctx.send("Nee")
|
|
else:
|
|
await ctx.send("https://imgur.com/a/bwA6Exn")
|
|
|
|
@commands.command(name="Changelog", aliases=["Cl", "Change", "Changes"])
|
|
@help.Category(category=Category.Didier)
|
|
async def changelog(self, ctx):
|
|
await ctx.send("v2.3.0: https://github.com/stijndcl/didier/releases/tag/2.3.0")
|
|
|
|
@commands.command(name="Todo", aliases=["List", "Td"])
|
|
@help.Category(category=Category.Didier)
|
|
async def todo(self, ctx):
|
|
await ctx.send("https://trello.com/b/PdtsAJea/didier-to-do-list")
|
|
|
|
@commands.command(name="LMGTFY", aliases=["Dsfr"], usage="[Query]")
|
|
@help.Category(category=Category.Other)
|
|
async def lmgtfy(self, ctx, *, query=None):
|
|
if query:
|
|
await ctx.send("https://lmgtfy.com/?q={}&iie=1".format(urllib.parse.quote(query)))
|
|
|
|
@commands.command(name="Neck", aliases=["Necc"], usage="[Lengte]*")
|
|
@help.Category(category=Category.Fun)
|
|
async def neck(self, ctx, size=None):
|
|
if not size:
|
|
size = 1
|
|
try:
|
|
size = int(size)
|
|
if not 0 < size < 16:
|
|
raise ValueError
|
|
except ValueError:
|
|
return await ctx.send("Geef een geldig getal op.")
|
|
|
|
await ctx.send("<:WhatDidYou:744476950654877756>" + ("<:DoTo:744476965951504414>" * size) + "<:MyDrink:744476979939508275>")
|
|
|
|
@commands.command()
|
|
async def open(self, ctx):
|
|
# await ctx.send(file=discord.File("files/images/open_source_bad.jpg"))
|
|
await ctx.send("Shut, it already is.")
|
|
|
|
@commands.command()
|
|
async def sc(self, ctx):
|
|
await ctx.send("http://take-a-screenshot.org/")
|
|
|
|
@commands.command(aliases=["os", "sauce", "src"])
|
|
async def source(self, ctx):
|
|
# await ctx.send("<https://bit.ly/31z3BuH>")
|
|
await ctx.send("https://github.com/stijndcl/didier")
|
|
|
|
@commands.command(aliases=["sunrise", "sunshine"])
|
|
async def sun(self, ctx):
|
|
s = sunrise.Sun()
|
|
await ctx.send(":sunny:: **{}**\n:crescent_moon:: **{}**".format(s.sunrise(), s.sunset()))
|
|
|
|
@commands.command(name="Tias", aliases=["TryIt"])
|
|
async def tias(self, ctx):
|
|
await ctx.send("***Try it and see***")
|
|
|
|
@commands.command(name="Inspire")
|
|
@help.Category(Category.Other)
|
|
async def inspire(self, ctx):
|
|
image = get("http://inspirobot.me/api?generate=true")
|
|
|
|
if image.status_code == 200:
|
|
await ctx.send(image.text)
|
|
else:
|
|
await ctx.send("Uh oh API down.")
|
|
|
|
|
|
def setup(client):
|
|
client.add_cog(Oneliners(client))
|