Merge pull request '10% kans op nieuwe GPT' (#24) from gpt into master
continuous-integration/drone/push Build is passing
continuous-integration/drone/push Build is passing
Reviewed-on: #24
This commit was merged in pull request #24.
This commit is contained in:
+30
-7
@@ -2,6 +2,9 @@ import discord
|
|||||||
from discord.ext import commands
|
from discord.ext import commands
|
||||||
import numpy as np
|
import numpy as np
|
||||||
import random
|
import random
|
||||||
|
import requests
|
||||||
|
import asyncio
|
||||||
|
import os
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
import re
|
import re
|
||||||
|
|
||||||
@@ -44,7 +47,7 @@ class Chatbot(commands.Cog):
|
|||||||
"hmm?",
|
"hmm?",
|
||||||
"JA WAT?",
|
"JA WAT?",
|
||||||
"Godve...Godver-fucking-domme! Wie de fuck heeft me zojuist gepingt? Wie de fuck heeft de ballen om mij te pingen?! Als ik jou vind hè, ik ram je helemaal de tyfus in. Ik ga je kapot maken. Welke breincel in jouw hoofd dacht dat het grappig was om mij te pingen? Noem jij dat 'grappig'? Ik zal je godverdomme iets laten zien wat grappig is, ja. Ik neuk je moeder zo hard dat ze van me gaat houden, godverdomme. Dat krijg je er van als je me pingt, vuile teringleijer. Jouw soort mag wat mij betreft uitsterven. Weet je, ik ga je helemaal geen aandacht meer geven. Je mag de tering krijgen, en daar blijft het bij. Kutjong.",
|
"Godve...Godver-fucking-domme! Wie de fuck heeft me zojuist gepingt? Wie de fuck heeft de ballen om mij te pingen?! Als ik jou vind hè, ik ram je helemaal de tyfus in. Ik ga je kapot maken. Welke breincel in jouw hoofd dacht dat het grappig was om mij te pingen? Noem jij dat 'grappig'? Ik zal je godverdomme iets laten zien wat grappig is, ja. Ik neuk je moeder zo hard dat ze van me gaat houden, godverdomme. Dat krijg je er van als je me pingt, vuile teringleijer. Jouw soort mag wat mij betreft uitsterven. Weet je, ik ga je helemaal geen aandacht meer geven. Je mag de tering krijgen, en daar blijft het bij. Kutjong.",
|
||||||
self.getResponseForMessage("stroopwafel")
|
self.getResponseForMessageLocal("stroopwafel")
|
||||||
]
|
]
|
||||||
try:
|
try:
|
||||||
MENTIONED_RESPONSES.append("Wat mot je, " + random.choice(self.bot.get_cog("Shitpost").insult) + "?")
|
MENTIONED_RESPONSES.append("Wat mot je, " + random.choice(self.bot.get_cog("Shitpost").insult) + "?")
|
||||||
@@ -61,15 +64,13 @@ class Chatbot(commands.Cog):
|
|||||||
self.pmLast = datetime.now()
|
self.pmLast = datetime.now()
|
||||||
await self.learnFromMessagesInChannel(message.channel, 1)
|
await self.learnFromMessagesInChannel(message.channel, 1)
|
||||||
await self.respondToMessage(message)
|
await self.respondToMessage(message)
|
||||||
elif message.channel.id == self.bot.hdChannels["belangrijk"]: #don't abuse the "belangrijk" channel
|
|
||||||
pass
|
|
||||||
else:
|
else:
|
||||||
a = random.randint(0,999) # probablity
|
a = random.randint(0,999) # probablity
|
||||||
if a < 40:
|
if a < 40:
|
||||||
await self.learnFromMessagesInChannel(message.channel, 10)
|
await self.learnFromMessagesInChannel(message.channel, 10)
|
||||||
if "stroop" in message.content.lower():
|
if "stroop" in message.content.lower():
|
||||||
a = a / 20 # significantly increase the chance of responding if somebody talks about him.
|
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
|
if message.channel.id == os.getenv('STROOP_CHANNEL_SHITPOST') and a < 40: #shitpost channel
|
||||||
await self.respondToMessage(message)
|
await self.respondToMessage(message)
|
||||||
elif a < 10: #all other channels
|
elif a < 10: #all other channels
|
||||||
await self.respondToMessage(message)
|
await self.respondToMessage(message)
|
||||||
@@ -267,7 +268,7 @@ class Chatbot(commands.Cog):
|
|||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
response = self.getResponseForMessage(wordsToRespondTo)
|
response = await self.getResponseForMessage(wordsToRespondTo)
|
||||||
await ctx.channel.send(response)
|
await ctx.channel.send(response)
|
||||||
|
|
||||||
# Calculate probabilities and pick a next word from a word pair dict:
|
# Calculate probabilities and pick a next word from a word pair dict:
|
||||||
@@ -283,11 +284,33 @@ class Chatbot(commands.Cog):
|
|||||||
async def respondToMessage(self, message):
|
async def respondToMessage(self, message):
|
||||||
wordsToRespondTo = message.content.strip().split()
|
wordsToRespondTo = message.content.strip().split()
|
||||||
|
|
||||||
response = self.getResponseForMessage(wordsToRespondTo)
|
response = await self.getResponseForMessage(wordsToRespondTo)
|
||||||
await message.channel.send(response)
|
await message.channel.send(response)
|
||||||
|
|
||||||
#Gets a response
|
#Gets a response
|
||||||
def getResponseForMessage(self, wordsToRespondTo):
|
async def getResponseForMessage(self, wordsToRespondTo):
|
||||||
|
if random.random() > 0.9:
|
||||||
|
try:
|
||||||
|
# GPT request moet echt even in een non-blocking executortje, anders loopt de hele boel vast
|
||||||
|
return await self.bot.loop.run_in_executor(None,self.getResponseForMessageOnline, wordsToRespondTo)
|
||||||
|
except:
|
||||||
|
pass # Door naar local call
|
||||||
|
return self.getResponseForMessageLocal(wordsToRespondTo)
|
||||||
|
|
||||||
|
def translateTo(self, language, text):
|
||||||
|
req = requests.post('http://gpt.hoekveen.net/translate', json={"text": text, "source_lang": "auto", "target_lang": language})
|
||||||
|
print(req.json())
|
||||||
|
return req.json()["translations"][0]["text"]
|
||||||
|
|
||||||
|
def getResponseForMessageOnline(self, wordsToRespondTo):
|
||||||
|
text = self.translateTo("en", " ".join(wordsToRespondTo))
|
||||||
|
req = requests.post('http://gpt.hoekveen.net/complete', json={"prompt": text, "max_tokens": 60})
|
||||||
|
print(req.json())
|
||||||
|
respons = req.json()["text"]
|
||||||
|
respons = respons[0:respons.rfind(".")+1] # Alles weg na de laatste punt
|
||||||
|
return self.translateTo("nl", respons)
|
||||||
|
|
||||||
|
def getResponseForMessageLocal(self, wordsToRespondTo):
|
||||||
|
|
||||||
MAX_N_WORDS = 100 #Don't use more words than this
|
MAX_N_WORDS = 100 #Don't use more words than this
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user