Merge pull request 'Update code om Python 3.11 te ondersteunen' (#22) from python311 into master
continuous-integration/drone/push Build is passing

Reviewed-on: #22
This commit was merged in pull request #22.
This commit is contained in:
2022-12-28 17:57:24 +01:00
7 changed files with 129 additions and 168 deletions
+1 -1
View File
@@ -3,7 +3,7 @@ name: default
steps:
- name: test
image: python:3.10
image: python:3.11
environment:
STROOP_DISCORD_TOKEN:
from_secret: STROOP_DISCORD_TOKEN
+30 -38
View File
@@ -1,4 +1,3 @@
import asyncio
import discord
from discord.ext import commands
import numpy as np
@@ -28,17 +27,16 @@ class Chatbot(commands.Cog):
#Do stuff when a message comes in:
@self.bot.event
@asyncio.coroutine
def on_message(message):
async def on_message(message):
if message.author.bot:
return #ignore your own messages, Stroop
if message.content.strip() == "" or message.content.strip()[0] != '!': #don't respond to a command
if message.content.lower() == "nihao":
yield from message.channel.send("kankerlauw")
await message.channel.send("kankerlauw")
return
if message.content.lower() == "lol":
yield from message.channel.send("laffing aut laut")
await message.channel.send("laffing aut laut")
return
if self.bot.user.mentioned_in(message) and "@everyone" not in message.content:
MENTIONED_RESPONSES = [
@@ -52,32 +50,32 @@ class Chatbot(commands.Cog):
MENTIONED_RESPONSES.append("Wat mot je, " + random.choice(self.bot.get_cog("Shitpost").insult) + "?")
except:
print("ERROR! - Could not import insults")
yield from message.channel.send(random.choice(MENTIONED_RESPONSES))
await message.channel.send(random.choice(MENTIONED_RESPONSES))
return
if re.match("^[0-9]+([,.]?[0-9]+)*?$", message.content.strip()) and random.randint(0,9) == 0:
yield from message.channel.send("That's Numberwang!") # https://www.youtube.com/watch?v=0obMRztklqU
await message.channel.send("That's Numberwang!") # https://www.youtube.com/watch?v=0obMRztklqU
return
if "DMChannel" in type(message.channel).__name__: #respond to messages in PM channels
if (self.isAllowedToLearnFromPm(message)): #avoid spam-learning
self.pmCount += 1
self.pmLast = datetime.now()
yield from self.learnFromMessagesInChannel(message.channel, 1)
yield from self.respondToMessage(message)
await self.learnFromMessagesInChannel(message.channel, 1)
await self.respondToMessage(message)
elif message.channel.id == self.bot.hdChannels["belangrijk"]: #don't abuse the "belangrijk" channel
pass
else:
a = random.randint(0,999) # probablity
if a < 40:
yield from self.learnFromMessagesInChannel(message.channel, 10)
await self.learnFromMessagesInChannel(message.channel, 10)
if "stroop" in message.content.lower():
a = a / 20 # significantly increase the chance of responding if somebody talks about him.
if message.channel.id == self.bot.hdChannels["shitpost"] and a < 40: #shitpost channel
yield from self.respondToMessage(message)
await self.respondToMessage(message)
elif a < 10: #all other channels
yield from self.respondToMessage(message)
await self.respondToMessage(message)
#process commands:
yield from self.bot.process_commands(message)
await self.bot.process_commands(message)
def __check(self, ctx):
return True
@@ -183,22 +181,20 @@ class Chatbot(commands.Cog):
@commands.command(pass_context=True, hidden=True)
@asyncio.coroutine
def trainmarkovchat(self, ctx, channelId=409751773595566081, nrOfMessages=50):
async def trainmarkovchat(self, ctx, channelId=409751773595566081, nrOfMessages=50):
"""Train that chain, jermaine
param channelId: use this channel to train
param nrOfMessages: use the x most recent messages
"""
channel=self.bot.get_channel(channelId)
yield from self.learnFromMessagesInChannel(channel, nrOfMessages)
await self.learnFromMessagesInChannel(channel, nrOfMessages)
yield from ctx.channel.send("Ik heb weer wat nieuwe woordjes geleerd. :slight_smile:")
await ctx.channel.send("Ik heb weer wat nieuwe woordjes geleerd. :slight_smile:")
#Learns from an x number of messages from a certain channel
@asyncio.coroutine
def learnFromMessagesInChannel(self, channel, nrOfMessages):
async def learnFromMessagesInChannel(self, channel, nrOfMessages):
#Open current chain:
wordDict = np.load('markov_dict.npy', allow_pickle=True).item()
@@ -207,7 +203,7 @@ class Chatbot(commands.Cog):
messageIterator = channel.history(limit=nrOfMessages, before=None, after=None, oldest_first=False, around=None)
allMessages = []
for i in range(nrOfMessages):
msg = yield from anext(messageIterator)
msg = await anext(messageIterator)
allMessages.append(msg)
i = 0
@@ -248,18 +244,17 @@ class Chatbot(commands.Cog):
@commands.command(pass_context=True, hidden=False)
@asyncio.coroutine
def reageer(self, ctx):
async def reageer(self, ctx):
"""Laat Stroop ergens op reageren.
Stroop leert van onze gesprekken. Hij kan zich nu voordoen als een van ons. Soort van.
"""
#Get previous message to respond to
messageIterator = ctx.channel.history(limit=3, before=None, after=None, oldest_first=False, around=None)
messageToRespondTo = yield from anext(messageIterator) #this will be the !reageer command. skip
messageToRespondTo = yield from anext(messageIterator)
messageToRespondTo = await anext(messageIterator) #this will be the !reageer command. skip
messageToRespondTo = await anext(messageIterator)
if messageToRespondTo.content.strip()[0] == '!' or messageToRespondTo.author.bot: #another chance
messageToRespondTo = yield from anext(messageIterator) #but it's not a huge problem if he responds to himself
messageToRespondTo = await anext(messageIterator) #but it's not a huge problem if he responds to himself
if messageToRespondTo.content.strip()[0] == '!':
wordsToRespondTo = []
else:
@@ -268,12 +263,12 @@ class Chatbot(commands.Cog):
#Delete command
try:
yield from ctx.message.delete()
await ctx.message.delete()
except:
pass
response = self.getResponseForMessage(wordsToRespondTo)
yield from ctx.channel.send(response)
await ctx.channel.send(response)
# Calculate probabilities and pick a next word from a word pair dict:
# https://stackoverflow.com/questions/835092/python-dictionary-are-keys-and-values-always-the-same-order
@@ -285,12 +280,11 @@ class Chatbot(commands.Cog):
#Respond to a message.
#Assumes the message isn't a command
@asyncio.coroutine
def respondToMessage(self, message):
async def respondToMessage(self, message):
wordsToRespondTo = message.content.strip().split()
response = self.getResponseForMessage(wordsToRespondTo)
yield from message.channel.send(response)
await message.channel.send(response)
#Gets a response
def getResponseForMessage(self, wordsToRespondTo):
@@ -351,7 +345,7 @@ class Chatbot(commands.Cog):
chain[n] = "@jemoeder"
#print(' '.join(chain))
#yield from ctx.channel.send(' '.join(chain))
#await ctx.channel.send(' '.join(chain))
return ' '.join(chain)
@@ -424,22 +418,20 @@ class Chatbot(commands.Cog):
return ' '.join(chain)
@commands.command(pass_context=True, hidden=False)
@asyncio.coroutine
def haiku(self, ctx):
async def haiku(self, ctx):
"""Stroop is een poëet. Laat hem een Haiku maken.
"""
response = self.getHaiku()
yield from ctx.channel.send(response)
await ctx.channel.send(response)
@commands.command(pass_context=True, hidden=False)
@asyncio.coroutine
def uitspraak(self, ctx, numPosts=1):
async def uitspraak(self, ctx, numPosts=1):
"""Random uitspraak uit de hall of fame.
Optioneel kan je een nummer meegeven voor meerdere uitspraken
0 voor alle uitspraken."""
try:
yield from ctx.message.delete()
await ctx.message.delete()
except:
pass
try:
@@ -451,6 +443,6 @@ class Chatbot(commands.Cog):
numPosts = len(uitspraken)
for i in range(numPosts):
message += uitspraken[i]
yield from ctx.channel.send(message)
await ctx.channel.send(message)
except:
pass
+1 -1
View File
@@ -1,4 +1,4 @@
FROM python:3.10
FROM python:3.11
WORKDIR /opt/stroopwafel
+12 -17
View File
@@ -1,4 +1,3 @@
import asyncio
import discord
import os
import praw
@@ -30,18 +29,17 @@ class General(commands.Cog):
return embed
@commands.command()
@asyncio.coroutine
def huge(self, ctx, *, arg):
async def huge(self, ctx, *, arg):
"""YUGE. Geeft een grote versie van de gegeven emoji terug. Werkt alleen voor custom emoji.
Bijvoorbeeld:
!huge :ancilla:
"""
em = self.get_emoji_embed(arg)
try:
yield from ctx.message.delete()
await ctx.message.delete()
except:
print("No permission to delete message")
yield from ctx.channel.send(ctx.author.mention, embed=em)
await ctx.channel.send(ctx.author.mention, embed=em)
def get_aww_post(self):
raww = self.r.subreddit('aww+catloaf+tuckedinkitties+babyelephantgifs+babybigcatgifs+blep+holdmynip+gingerkitty+cathighfive+catsstandingup+catsareassholes+eyebleach')
@@ -49,15 +47,14 @@ class General(commands.Cog):
return random.choice(listing)
@commands.command(pass_context=True)
@asyncio.coroutine
def aww(self, ctx):
async def aww(self, ctx):
""" iets schattigs... """
post = self.get_aww_post()
try:
yield from ctx.message.delete()
await ctx.message.delete()
except:
print("No permission to delete message")
yield from ctx.channel.send(ctx.author.mention + ' ' + post.url)
await ctx.channel.send(ctx.author.mention + ' ' + post.url)
def get_kopieerpasta(self):
rkopieerpasta = self.r.subreddit('kopieerpasta')
@@ -71,8 +68,7 @@ class General(commands.Cog):
return post
@commands.command(pass_context=True)
@asyncio.coroutine
def kopieerpasta(self, ctx):
async def kopieerpasta(self, ctx):
"""Een willekeurige shitpost"""
post = self.get_kopieerpasta()
print(post.url)
@@ -83,23 +79,22 @@ class General(commands.Cog):
print(post.url)
a += 1
try:
yield from ctx.message.delete()
await ctx.message.delete()
except:
print("No permission to delete message")
if len(post.selftext + post.title) < 1990:
yield from ctx.channel.send('**'+post.title+'**```'+post.selftext+'```')
await ctx.channel.send('**'+post.title+'**```'+post.selftext+'```')
else:
yield from ctx.channel.send("Geen kopieerpasta voor jou vandaag.")
await ctx.channel.send("Geen kopieerpasta voor jou vandaag.")
def get_playlist_json(self):
return requests.get(self.muzak_url + '/stroopwafel')
@commands.command(pass_context=True)
@asyncio.coroutine
def playlist(self, ctx):
async 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)
await ctx.channel.send(msg)
+22 -27
View File
@@ -1,4 +1,3 @@
import asyncio
import discord
from discord.ext import commands
from pprint import pprint
@@ -25,8 +24,7 @@ class Points(commands.Cog):
return True
@commands.command(pass_context=True, hidden=False)
@asyncio.coroutine
def geefpunten(self, ctx, user, points: int):
async def geefpunten(self, ctx, user, points: int):
"""Wees eens lief. Geef iemand wat punten.
Bijvoorbeeld:
!geefpunten @ikbenjp 42
@@ -37,29 +35,29 @@ class Points(commands.Cog):
self.reloadPointsCount()
if points == 0:
yield from ctx.channel.send("0 punten? Gul hoor.")
await ctx.channel.send("0 punten? Gul hoor.")
return
if points < 0:
yield from self.sendErrorDm(ctx, "Daar hebben we de !neempunten functie voor. Voor meer info typ: ```!help neempunten```")
await self.sendErrorDm(ctx, "Daar hebben we de !neempunten functie voor. Voor meer info typ: ```!help neempunten```")
return
if user[0:2] != "<@":
yield from self.sendErrorDm(ctx, "Je moet iemand taggen om punten te geven. :)")
await self.sendErrorDm(ctx, "Je moet iemand taggen om punten te geven. :)")
#TODO ook userId oid toestaan?
return
userObj = ctx.message.mentions[0]
if userObj.id == ctx.author.id:
yield from ctx.channel.send("Nee. Je mag niet jezelf punten geven.")
await ctx.channel.send("Nee. Je mag niet jezelf punten geven.")
time.sleep(0.6)
yield from ctx.channel.send("Gekkie.")
await ctx.channel.send("Gekkie.")
return
if not self.isUserOnList(userObj):
yield from ctx.channel.send("Nee. Die krijgt geen punten.")
await ctx.channel.send("Nee. Die krijgt geen punten.")
return
if self.getUserBalance(ctx.author) < points:
yield from ctx.channel.send("Daar heb jij niet genoeg puntjes voor. :bell:")
await ctx.channel.send("Daar heb jij niet genoeg puntjes voor. :bell:")
return
# Execute the transaction:
@@ -68,7 +66,7 @@ class Points(commands.Cog):
self.savePointsCount()
message = self.getMessageForAwardingPoints(ctx.author.name, userObj.name, points)
yield from ctx.channel.send(message)
await ctx.channel.send(message)
def execute_geefpunten(self, giverId, recieverId, points):
# First, try to give away (at most 10) bankpoints
@@ -86,8 +84,7 @@ class Points(commands.Cog):
@commands.command(pass_context=True, hidden=False)
@asyncio.coroutine
def neempunten(self, ctx, user, points: int):
async def neempunten(self, ctx, user, points: int):
"""Tijd om iemand the shamen. Haal wat punten weg.
Bijvoorbeeld:
!neempunten @mark 5
@@ -98,27 +95,27 @@ class Points(commands.Cog):
self.reloadPointsCount()
if points < 1:
yield from ctx.channel.send("Volgens mij snap je het niet.")
await ctx.channel.send("Volgens mij snap je het niet.")
return
if points > 10:
yield from self.sendErrorDm(ctx, "Je mag niet meer dan 10 punten afnemen.")
await self.sendErrorDm(ctx, "Je mag niet meer dan 10 punten afnemen.")
return
remainingToTakeAway = self.getUsersRemainingPointsToTakeToday(ctx.author.id)
if points > remainingToTakeAway: # The limit per day is 10
yield from self.sendErrorDm(ctx, "Je mag vandaag nog maar " + str(remainingToTakeAway) + " punten wegnemen.")
await self.sendErrorDm(ctx, "Je mag vandaag nog maar " + str(remainingToTakeAway) + " punten wegnemen.")
return
if user[0:2] != "<@":
yield from self.sendErrorDm(ctx, "Je moet iemand taggen. :)")
await self.sendErrorDm(ctx, "Je moet iemand taggen. :)")
return
userObj = ctx.message.mentions[0]
if not self.isUserOnList(userObj):
yield from ctx.channel.send("Nee.")
await ctx.channel.send("Nee.")
return
if self.getUserBalance(userObj) < points:
yield from ctx.channel.send(userObj.name + " mag niet rood staan.")
await ctx.channel.send(userObj.name + " mag niet rood staan.")
return
# Execute the transaction:
@@ -127,7 +124,7 @@ class Points(commands.Cog):
self.savePointsCount()
message = self.getMessageForTakingPoints(userObj.name, ctx.author.name, points)
yield from ctx.channel.send(message)
await ctx.channel.send(message)
def execute_neempunten(self, takerId, victimId, points):
self.increaseUsersPointTakenOnDate(takerId, points)
@@ -135,8 +132,7 @@ class Points(commands.Cog):
@commands.command(pass_context=True, hidden=False)
@asyncio.coroutine
def puntentelling(self, ctx):
async def puntentelling(self, ctx):
"""Hoeveel punten heeft iedereen?
"""
@@ -148,18 +144,17 @@ class Points(commands.Cog):
if user[0] != self.BANK_ID:
message += str(user[1]["points"]).rjust(4) + " " + user[1]["name"] + "\n"
message += str(self.pointsCount[self.BANK_ID]["points"]).rjust(4) + " " + self.pointsCount[self.BANK_ID]["name"] + "```"
yield from ctx.channel.send(message)
await ctx.channel.send(message)
# No public shaming. Send somebody a direct correction message.
@asyncio.coroutine
def sendErrorDm(self, ctx, message):
async def sendErrorDm(self, ctx, message):
try:
yield from ctx.message.delete()
await ctx.message.delete()
except:
print("No permission to delete message")
try:
yield from ctx.message.author.send(message)
await ctx.message.author.send(message)
except:
print("No permission to send DM")
+62 -83
View File
@@ -1,4 +1,3 @@
import asyncio
import discord
from discord.ext import commands
from urllib import request
@@ -43,8 +42,7 @@ class Shitpost(commands.Cog):
warnings.simplefilter("ignore")
@commands.command(pass_context=True, hidden=False)
@asyncio.coroutine
def ishetalhdcon(self, ctx):
async def ishetalhdcon(self, ctx):
"""Hoe lang nog tot Hoestende Draken Con 2022?
Gebruik: !ishetalhdcon
"""
@@ -61,7 +59,7 @@ class Shitpost(commands.Cog):
Message = "HD Con 2022 is vandaag alweer afgelopen... F"
if Distance.days < 0:
yield from ctx.channel.send(ctx.author.mention + ' ' + str(Message))
await ctx.channel.send(ctx.author.mention + ' ' + str(Message))
return
NachtjesSlapen = Distance.days + 1
@@ -90,23 +88,23 @@ class Shitpost(commands.Cog):
return #fuck it.
if eventsMinutesAgoSameAuthor > 0:
if eventsMinutesAgoSameAuthor > 2:
yield from ctx.channel.send("...")
await ctx.channel.send("...")
return
yield from ctx.channel.send("Dat vroeg je net ook al, " + ctx.author.mention + "!")
await ctx.channel.send("Dat vroeg je net ook al, " + ctx.author.mention + "!")
return
#Hoe vaker er wordt gevraagd, hoe ongeduldiger de antwoorden:
if not "DMChannel" in type(ctx.channel).__name__: #ignore personal chats
impatientFactor = 10 + eventsMinutesAgo*25 + eventsLastDays*10;
impatientFactor *= random.random()
if impatientFactor > 100:
yield from ctx.channel.send("Nee!")
await ctx.channel.send("Nee!")
return
elif impatientFactor > 15 and eventsMinutesAgo > 0:
Message = "Dat hebben jullie net gevraagd."
elif impatientFactor > 9:
Message = "Nee."
yield from ctx.channel.send(ctx.author.mention + ' ' + str(Message))
await ctx.channel.send(ctx.author.mention + ' ' + str(Message))
def zalgofy(self, sentence, factor = 4):
random.seed(datetime.now().timestamp())
@@ -119,8 +117,7 @@ class Shitpost(commands.Cog):
return message
@commands.command(pass_context=True, hidden=False)
@asyncio.coroutine
def zalgo(self, ctx, *, arg):
async def zalgo(self, ctx, *, arg):
"""z̴̬̘͇̗͇̦̤̩̜͜ą̷̟̯̪̩̣̭̭͇̹l̴̗͓̟̠̤̳̗͉̠ͅg̵̜͎̪̞̫͎͈͉͉͍o̵̧̧͇̱̱̜̮͉͉̳ ̴̨̡͖̘̪̭̖͖̘̝h̸̭̰̫̲̺̹̻̜͕ͅe̴̢̘̪̱̱̩̠̣̘̱ ̴̡̢̲̞̙̝̮̻̻͇c̶̡̢̺͙̮̗̲̹̱̱o̷̢̡̺̘͈͎̫̬͔̤m̷͕͍͍̥͖̻̲̞̝ͅe̷̱̟͕̥͕̞̜̫̳̙s̷̨͍̼̝̙̩̥̰̠ͅ
h̷̦̰̣̗̭͕̩͓͈̠i̶̗̰̹̤̖͙̰̹͙̹j̸̧̜̬̬̜̹͔̰̫͜ ̶̧͉͔̠̻͈̜̳̥̭k̸̯̳̠̼̙̗̘̳͜ͅǫ̵̝̱̩͎̫͈̣̪̦m̶̺̙̟̫͔͈̭̖̱ͅt̶̜̠̟͙̞̠̗̗̥ͅ ̸̢̹̜͉͙̩̬̖ͅͅh̷̯̮̘̭͈̜̺͎̳̯i̴̩̯̼̱͇̟̫̻̘̖j̵̪̤̦͖̮̜̦̼̺̮ ̶̧͇̭̞̮̩̼͚̮ͅḵ̴̢̨̢͉͉͖̹̬̺o̵̢̪̥̻͙͕̫̥̗͜m̶̧̡͔̠̺͖̝̳̪ͅt̷̢̮̭̜̥̠̼̫͍̯
d̷̢̪͍͓̭̣̼̠͎̠e̴̡̢̩̱͙̻̥̯͎͜ ̵̲̪͖̖͖͍͈͎̮̼ļ̴̯̗̝̦͍͍͖̰͜i̶̡̘̟̳̖͙͕͔̺͜ȩ̸̤͎̣͖͔̭͔̫̯v̷͔̺͖̖̞̙̘̖̠͓e̶̲͍̮̳͎̗̳̞̹͔ ̸̡̬̫͎͎̝͍̤̯ͅg̴̨̞̻͙̠̰͖͖̝ͅǫ̴̘̥͇̙̖͈͍̹̥e̵̥͇̫̱̬̝̥̲̞̜d̷͈͙̝͍͔̘͕̼̜̦e̴̡̯̦͉͙̪̭͕̻̝
@@ -130,10 +127,10 @@ class Shitpost(commands.Cog):
"""
message = self.zalgofy(arg)
try:
yield from ctx.message.delete()
await ctx.message.delete()
except:
print("No permission to delete message")
yield from ctx.channel.send(str(message))
await ctx.channel.send(str(message))
def get_corona_message(self):
response = requests.get('https://covid.ourworldindata.org/data/latest/owid-covid-latest.json')
@@ -151,18 +148,16 @@ class Shitpost(commands.Cog):
return None
@commands.command(pass_context=True, hidden=False)
@asyncio.coroutine
def corona(self, ctx):
async def corona(self, ctx):
try:
yield from ctx.message.delete()
await ctx.message.delete()
except:
print("No permission to delete message")
message = self.get_corona_message()
yield from ctx.channel.send(ctx.author.mention + ' ' + str(message))
await ctx.channel.send(ctx.author.mention + ' ' + str(message))
@commands.command(pass_context=True, hidden=False)
@asyncio.coroutine
def viertwintig(self, ctx):
async def viertwintig(self, ctx):
"""Hoe lang nog tot 420?
Gebruik: !viertwintig
"""
@@ -188,11 +183,10 @@ class Shitpost(commands.Cog):
seconds = secondsLeft - minutes * 60
Message += "Nog " + str(days) + " dagen, " + str(hours) + " uur, " + str(minutes) + " minuten en " + str(seconds) + " seconden tot 420!!"
yield from ctx.channel.send(ctx.author.mention + ' ' + str(Message))
await ctx.channel.send(ctx.author.mention + ' ' + str(Message))
@commands.command(pass_context=True, hidden=False)
@asyncio.coroutine
def iselderscrolls6aluit(self, ctx):
async def iselderscrolls6aluit(self, ctx):
"""Hoe lang nog tot Elder Scrolls 6? 11-11-11? 20-20-20?
Gebruik: !iselderscrolls6aluit
"""
@@ -203,15 +197,14 @@ class Shitpost(commands.Cog):
else:
Message = "Nee. :frowning2: Nog even geduld..."
yield from ctx.channel.send(ctx.author.mention + ' ' + str(Message))
await ctx.channel.send(ctx.author.mention + ' ' + str(Message))
def get_giet_het_oan(self):
# Alsof we ooit nog een elfstedentocht gaan krijgen.
return "nee"
@commands.command(pass_context=True, hidden=False)
@asyncio.coroutine
def giethetaloan(self, ctx):
async def giethetaloan(self, ctx):
"""Giet het al oan?
Ja of Nee.. kom op nou.
"""
@@ -225,7 +218,7 @@ class Shitpost(commands.Cog):
else:
if 'nee' in answer:
reactie += 'Nee helaas..'
yield from ctx.channel.send(ctx.author.mention + ' ' + reactie)
await ctx.channel.send(ctx.author.mention + ' ' + reactie)
def get_inspiration(self):
inspiration = requests.get(url='http://inspirobot.me/api?generate=true')
@@ -235,8 +228,7 @@ class Shitpost(commands.Cog):
@commands.command(pass_context=True, hidden=False)
@asyncio.coroutine
def inspire(self, ctx):
async def inspire(self, ctx):
"""Laat je inspireren
Bijvoorbeeld:
!inspire
@@ -246,12 +238,12 @@ class Shitpost(commands.Cog):
em = discord.Embed(title='Uw wijze woorden:', type='photo')
em.set_image(url=inspo)
try:
yield from ctx.message.delete()
await ctx.message.delete()
except:
print("No permission to delete message")
yield from ctx.channel.send(ctx.author.mention, embed=em)
await ctx.channel.send(ctx.author.mention, embed=em)
else:
yield from ctx.channel.send(ctx.author.mention + ' helaas, geen quote gevonden.')
await ctx.channel.send(ctx.author.mention + ' helaas, geen quote gevonden.')
def get_imgflip_embed(self, template: str, boven: str, onder: str, extra_options: dict = None):
params = dict(
@@ -273,49 +265,46 @@ class Shitpost(commands.Cog):
@commands.command(pass_context=True, hidden=True)
@asyncio.coroutine
def tering(self, ctx, boven: str, onder: str):
async def tering(self, ctx, boven: str, onder: str):
"""Vanavond gaan we helemaal naar de tering
Bijvoorbeeld:
!tering \"Vanavond\" \"gaan we helemaal naar de tering\"
"""
em = self.get_imgflip_embed(self.imgflips['tering'], boven, onder)
try:
yield from ctx.message.delete()
await ctx.message.delete()
except:
print("No permission to delete message")
if em:
yield from ctx.channel.send(ctx.author.mention, embed=em)
await ctx.channel.send(ctx.author.mention, embed=em)
@commands.command(pass_context=True, hidden=True)
@asyncio.coroutine
def mark(self, ctx, boven: str, onder: str):
async def mark(self, ctx, boven: str, onder: str):
"""Maakt een mark meem.
Bijvoorbeeld:
!mark \"je moeder\" \"is een hoer\"
"""
em = self.get_imgflip_embed(self.imgflips['mark'], boven, onder)
try:
yield from ctx.message.delete()
await ctx.message.delete()
except:
print("No permission to delete message")
if em:
yield from ctx.channel.send(ctx.author.mention, embed=em)
await 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):
async def eriku(self, ctx, boven: str, onder: str):
"""Maakt een erik meem.
Bijvoorbeeld:
!eriku \"je moeder\" \"is een hoer\"
"""
em = self.get_imgflip_embed(self.imgflips['eriku'], boven, onder)
try:
yield from ctx.message.delete()
await ctx.message.delete()
except:
print("No permission to delete message")
if em:
yield from ctx.channel.send(ctx.author.mention, embed=em)
await ctx.channel.send(ctx.author.mention, embed=em)
def get_tegeltje(self, tekst, auteur):
params = {
@@ -341,43 +330,39 @@ class Shitpost(commands.Cog):
return self.get_imgflip_embed(self.imgflips['tegeltje'], "", "", params)
@commands.command(pass_context=True, hidden=True)
@asyncio.coroutine
def tegeltje(self, ctx, tekst: str, auteur: str=" "):
async def tegeltje(self, ctx, tekst: str, auteur: str=" "):
"""Maak een mooi tegeltje met volkswijsheid
Bijvoorbeeld:
!tegeltje \"Oost west, 420 best\" \"Lourens\"
"""
em = get_tegeltje(tekst, auteur)
em = self.get_tegeltje(tekst, auteur)
try:
yield from ctx.message.delete()
await ctx.message.delete()
except:
print("No permission to delete message")
if em:
yield from ctx.channel.send(ctx.author.mention, embed=em)
await 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):
async def zout(self, ctx, boven: str, onder: str):
"""Maakt een martijn-zout meem.
Bijvoorbeeld:
!zout \"je moeder\" \"is een hoer\"
"""
em = self.get_imgflip_embed(self.imgflips['zout'], boven, onder)
try:
yield from ctx.message.delete()
await ctx.message.delete()
except:
print("No permission to delete message")
if em:
yield from ctx.channel.send(ctx.author.mention, embed=em)
await ctx.channel.send(ctx.author.mention, embed=em)
@commands.command(pass_context=True, hidden=True)
@asyncio.coroutine
def nihao(self,ctx):
yield from ctx.channel.send("kankerlauw")
async def nihao(self,ctx):
await ctx.channel.send("kankerlauw")
@commands.command(pass_context=True)
@asyncio.coroutine
def tijd(self, ctx, *args):
async def tijd(self, ctx, *args):
"""Vertelt je hoe laat het is..
Misschien geeft het ook wel een leuke meem terug.
Wie weet.
@@ -398,20 +383,20 @@ class Shitpost(commands.Cog):
elif os.path.isfile(filepng):
filepath = filepng
try:
yield from ctx.message.delete()
await ctx.message.delete()
except:
print("No permission to delete message")
if filepath != '':
yield from ctx.channel.send(ctx.author.mention + ' Het is nu ' + datetime.now().strftime('%H:%M'), file=discord.File(filepath, 'tijd.png'))
await 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'))
await ctx.channel.send(ctx.author.mention + ' Het is nu ' + datetime.now().strftime('%H:%M'))
def get_dice_roll(self, nrOfDice, dieType, modifier=None):
if nrOfDice > 99 or dieType > 9999 or dieType < 2 or (modifier and abs(modifier) > 9999):
return None
# Do the rolling
random.seed(datetime.now())
random.seed(datetime.now().timestamp())
total = 0
rolls = []
for x in range(0, nrOfDice):
@@ -447,8 +432,7 @@ class Shitpost(commands.Cog):
return (numDice, die, modifier)
@commands.command(pass_context=True)
@asyncio.coroutine
def roll(self, ctx, *, dice):
async def roll(self, ctx, *, dice):
"""Roll een dobbelsteen. Of een paar. Bijvoorbeeld:
!roll 4d20
!roll 1d6 + 5
@@ -456,9 +440,9 @@ class Shitpost(commands.Cog):
(nrOfDice, dieType, modifier) = self.get_dice_parameters(dice)
message = self.get_dice_roll(nrOfDice, dieType, modifier)
if message:
yield from ctx.channel.send(message)
await ctx.channel.send(message)
else:
yield from ctx.channel.send("Die roll vind ik echt een beetje te mal..")
await ctx.channel.send("Die roll vind ik echt een beetje te mal..")
def get_weerbericht(self, wData, verbose=None):
if not wData:
@@ -519,8 +503,7 @@ class Shitpost(commands.Cog):
return None
@commands.command(pass_context=True)
@asyncio.coroutine
def weer(self, ctx, location="Leiden", verbose=None):
async def weer(self, ctx, location="Leiden", verbose=None):
"""Vertelt je het weer.
Omdat je te lui bent om naar buiten te kijken.
Oant Moarn!
@@ -530,7 +513,7 @@ class Shitpost(commands.Cog):
message = self.get_weerbericht(wData, verbose)
if not wData or not message:
message = "Weer ophalen niet gelukt. Probeer het later nogmaals.."
yield from ctx.channel.send(message)
await ctx.channel.send(message)
#returns a nice weather icon. Sometimes the API uses non-documented icons, so we return something else
def getWeatherIconTranslation(self, iconKey):
@@ -610,27 +593,25 @@ class Shitpost(commands.Cog):
return zwarte_kaart.replace("___", "**{}**").format(*wit)
@commands.command(pass_context=True)
@asyncio.coroutine
def ktdm(self, ctx, *args):
async def ktdm(self, ctx, *args):
'''Speel Kaarten Tegen De Mensheid! Genereer een kaart of geef zelf opties.
Bijvoorbeeld: !ktdm <"1"><"2"><"3"> (aanbevolen 1 of 2, max 3)'''
try:
yield from ctx.message.delete()
await ctx.message.delete()
except:
print("No permission to delete message")
resultaat = self.get_ktdm(args)
if resultaat:
yield from ctx.channel.send(f"{ctx.author.mention}\n{resultaat}")
await ctx.channel.send(f"{ctx.author.mention}\n{resultaat}")
else:
yield from ctx.channel.send(f"{ctx.author.mention}\nIets ging niet helemaal lekker")
await ctx.channel.send(f"{ctx.author.mention}\nIets ging niet helemaal lekker")
@commands.command(pass_context=True)
@asyncio.coroutine
def beledig(self, ctx, member:discord.User):
async def beledig(self, ctx, member:discord.User):
'''Je vindt iemand stom maar je hebt geen inspiratie? Beledig al je vriendjes met deze handige beledig-i-fier!
Bijvoorbeeld: !beledig @jemoeder'''
yield from ctx.channel.send(member.mention+ ", " + ctx.author.mention + " vindt jou een " + random.choice(self.insult) + "! :angry:")
yield from ctx.message.delete()
await ctx.channel.send(member.mention+ ", " + ctx.author.mention + " vindt jou een " + random.choice(self.insult) + "! :angry:")
await ctx.message.delete()
def get_watspelenwe_cal(self):
"""Geeft een paar terug, met de titel en omschrijving van het eerstvolgende event uit de kalender"""
@@ -749,8 +730,7 @@ class Shitpost(commands.Cog):
return message
@commands.command(pass_context=True)
@asyncio.coroutine
def watspelenwe(self, ctx):
async def watspelenwe(self, ctx):
"""Stroop weet wat we spelen op vrijdag.
Geeft elke week een pseudo-random antwoord.
Geseed op weeknummer + jaar.
@@ -764,10 +744,10 @@ class Shitpost(commands.Cog):
message += ". En wilt iemand even aan Mark vragen of hij de kalender bijhoudt?"
try:
yield from ctx.message.delete()
await ctx.message.delete()
except:
print("No permission to delete message")
yield from ctx.channel.send(message)
await ctx.channel.send(message)
def get_review_string(self, topic = ""):
if topic == "":
@@ -819,10 +799,9 @@ class Shitpost(commands.Cog):
return message
@commands.command(pass_context=True)
@asyncio.coroutine
def review(self, ctx, *args):
async def review(self, ctx, *args):
"""Stroop heeft (bijna) overal een mening over. Vraag het hem!
"""
topic = " ".join(args)
message = self.get_review_string(topic)
yield from ctx.channel.send(message)
await ctx.channel.send(message)
+1 -1
View File
@@ -39,7 +39,7 @@ class TestShitpost(unittest.TestCase):
def test_watspelenwe_cal(self):
data = requests.get(os.getenv('STROOP_CALDAV_CAL'))
if not data:
self.skipTest(f"Server at {self.cog.muzak_url} has an error, or is unavailable")
self.skipTest(f"Server at {os.getenv('STROOP_CALDAV_HOST')} has an error, or is unavailable")
(activiteit, reden) = self.cog.get_watspelenwe_cal()
with self.subTest(msg="Watspelenwe activiteit does not return a string"):