2020-10-13 21:02:40 +02:00
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
2021-03-03 15:36:18 +01:00
from requests import get
2020-10-13 21:02:40 +02:00
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 )
2021-02-27 15:28:00 +01:00
async def reverse ( self , ctx , * , args ) :
await ctx . send ( args [ : : - 1 ] )
2020-10-13 21:02:40 +02:00
@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. \n MAAR 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 )
2021-02-08 20:26:34 +01:00
async def changelog ( self , ctx ) :
await ctx . send ( " v2.3.0: https://github.com/stijndcl/didier/releases/tag/2.3.0 " )
2020-10-13 21:02:40 +02:00
@commands.command ( name = " Todo " , aliases = [ " List " , " Td " ] )
@help.Category ( category = Category . Didier )
2021-03-03 15:36:18 +01:00
async def todo ( self , ctx ) :
2020-10-13 21:02:40 +02:00
await ctx . send ( " https://trello.com/b/PdtsAJea/didier-to-do-list " )
2021-01-23 23:40:49 +01:00
@commands.command ( name = " LMGTFY " , aliases = [ " Dsfr " ] , usage = " [Query] " )
2020-10-13 21:02:40 +02:00
@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"))
2020-10-13 21:33:30 +02:00
await ctx . send ( " Shut, it already is. " )
2020-10-13 21:02:40 +02:00
@commands.command ( )
2021-03-03 15:36:18 +01:00
async def sc ( self , ctx ) :
2020-10-13 21:02:40 +02:00
await ctx . send ( " http://take-a-screenshot.org/ " )
2020-10-14 09:57:08 +02:00
@commands.command ( aliases = [ " os " , " sauce " , " src " ] )
2020-10-13 21:02:40 +02:00
async def source ( self , ctx ) :
# await ctx.send("<https://bit.ly/31z3BuH>")
2020-10-13 21:33:30 +02:00
await ctx . send ( " https://github.com/stijndcl/didier " )
2020-10-13 21:02:40 +02:00
@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 " ] )
2021-03-03 15:36:18 +01:00
async def tias ( self , ctx ) :
2020-10-13 21:02:40 +02:00
await ctx . send ( " ***Try it and see*** " )
2021-03-03 15:36:18 +01:00
@commands.command ( name = " Inspire " )
@help.Category ( Category . Other )
async def inspire ( self , ctx ) :
2022-02-05 14:33:11 +01:00
image = get ( " https://inspirobot.me/api?generate=true " )
2021-03-03 15:36:18 +01:00
if image . status_code == 200 :
await ctx . send ( image . text )
else :
await ctx . send ( " Uh oh API down. " )
2020-10-13 21:02:40 +02:00
def setup ( client ) :
client . add_cog ( Oneliners ( client ) )