10% kans op nieuwe GPT #24

Merged
jp merged 5 commits from gpt into master 2023-03-18 23:42:06 +01:00
+30 -7
View File
@@ -2,6 +2,9 @@ import discord
from discord.ext import commands
import numpy as np
import random
import requests
import asyncio
import os
from datetime import datetime
import re
@@ -44,7 +47,7 @@ class Chatbot(commands.Cog):
"hmm?",
"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.",
self.getResponseForMessage("stroopwafel")
self.getResponseForMessageLocal("stroopwafel")
]
try:
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()
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:
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
if message.channel.id == os.getenv('STROOP_CHANNEL_SHITPOST') and a < 40: #shitpost channel
await self.respondToMessage(message)
elif a < 10: #all other channels
await self.respondToMessage(message)
@@ -267,7 +268,7 @@ class Chatbot(commands.Cog):
except:
pass
response = self.getResponseForMessage(wordsToRespondTo)
response = await self.getResponseForMessage(wordsToRespondTo)
await ctx.channel.send(response)
# 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):
wordsToRespondTo = message.content.strip().split()
response = self.getResponseForMessage(wordsToRespondTo)
response = await self.getResponseForMessage(wordsToRespondTo)
await message.channel.send(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