Merge branch 'main' into slashgroups-refactor

Rene Teigen 2 years ago
commit 4657d9d814

@ -1,6 +1,6 @@
# These are supported funding model platforms
github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
github: [Kav-K]
patreon: # Replace with a single Patreon username
open_collective: # Replace with a single Open Collective username
ko_fi: # Replace with a single Ko-fi username
@ -10,4 +10,4 @@ liberapay: # Replace with a single Liberapay username
issuehunt: # Replace with a single IssueHunt username
otechie: # Replace with a single Otechie username
lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
custom: https://paypal.me/kaveenkk9
custom: #Nothing

@ -104,7 +104,12 @@ cd GPT3Discord/
sudo apt-get update
sudo apt install software-properties-common
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt install python3.9 python3.9-pip
sudo apt install python3.9
sudo apt install python3.9-distutils # If this doesn't work, try sudo apt install python3-distutils
# Install Pip for python3.9
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python3.9 get-pip.py
# Install project dependencies
python3.9 -m pip install -r requirements.txt
@ -125,6 +130,18 @@ screen gpt3discord
screen -r
```
If the last few commands don't allow the bot to run `screen gpt3discord`, you can attempt to run the bot another way:
```bash
{Navigate to the folder where the project files are}
screen -dmS GPTBot bash -c 'python3.9 gpt3discord.py'
# Reattach to screen session
screen -x # will reattach if this is the only screen session, if there are multiple, it will show IDs
# If there are multiple IDs returned by screen -x:
screen -d -r {ID} # replace {ID} with the ID of the screen session you want to reattach to
```
## Docker Installation
We now have a `Dockerfile` in the repository. This will build / install all dependencies and put a `gpt3discord` binary (main.py) into path.
@ -200,4 +217,4 @@ This can also be run via screen/tmux or detached like a daemon.
# Configuration
All the model parameters are configurable inside discord. Type `!gp` to view all the configurable parameters, and use `/settings <param> <value>` to set parameters. For example, if I wanted to change the number of images generated by DALL-E by default to 4, I can type the following command in discord: `/settings num_images 4`
All the model parameters are configurable inside discord. Type `/settings` to view all the configurable parameters, and use `/settings <param> <value>` to set parameters. For example, if I wanted to change the number of images generated by DALL-E by default to 4, I can type the following command in discord: `/settings num_images 4`

@ -75,7 +75,7 @@ class DrawDallEService(discord.Cog, name="DrawDallEService"):
)
await result_message.edit(
view=SaveView(image_urls, self, self.converser_cog, result_message)
view=SaveView(ctx, image_urls, self, self.converser_cog, result_message)
)
self.converser_cog.users_to_interactions[user_id] = []
@ -94,7 +94,7 @@ class DrawDallEService(discord.Cog, name="DrawDallEService"):
file=file,
)
await message.edit(
view=SaveView(image_urls, self, self.converser_cog, message)
view=SaveView(ctx, image_urls, self, self.converser_cog, message)
)
else: # Varying case
if not draw_from_optimizer:
@ -105,7 +105,12 @@ class DrawDallEService(discord.Cog, name="DrawDallEService"):
)
await result_message.edit(
view=SaveView(
image_urls, self, self.converser_cog, result_message, True
ctx,
image_urls,
self,
self.converser_cog,
result_message,
True,
)
)
@ -117,7 +122,7 @@ class DrawDallEService(discord.Cog, name="DrawDallEService"):
)
await result_message.edit(
view=SaveView(
image_urls, self, self.converser_cog, result_message
ctx, image_urls, self, self.converser_cog, result_message
)
)
@ -200,11 +205,19 @@ class DrawDallEService(discord.Cog, name="DrawDallEService"):
class SaveView(discord.ui.View):
def __init__(
self, image_urls, cog, converser_cog, message, no_retry=False, only_save=None
self,
ctx,
image_urls,
cog,
converser_cog,
message,
no_retry=False,
only_save=None,
):
super().__init__(
timeout=3600 if not only_save else None
) # 10 minute timeout for Retry, Save
) # 1 hour timeout for Retry, Save
self.ctx = ctx
self.image_urls = image_urls
self.cog = cog
self.no_retry = no_retry
@ -230,6 +243,7 @@ class SaveView(discord.ui.View):
# Create a new view with the same params as this one, but pass only_save=True
new_view = SaveView(
self.ctx,
self.image_urls,
self.cog,
self.converser_cog,
@ -239,7 +253,7 @@ class SaveView(discord.ui.View):
)
# Set the view of the message to the new view
await self.message.edit(view=new_view)
await self.ctx.edit(view=new_view)
class VaryButton(discord.ui.Button):

@ -625,12 +625,12 @@ class GPT3ComCon(discord.Cog, name="GPT3ComCon"):
response_message = (
await ctx.respond(
response_text,
view=RedoView(self, user_id),
view=RedoView(ctx, self, user_id),
)
if from_context
else await ctx.reply(
response_text,
view=RedoView(self, user_id),
view=RedoView(ctx, self, user_id),
)
)
@ -890,9 +890,10 @@ class GPT3ComCon(discord.Cog, name="GPT3ComCon"):
class RedoView(discord.ui.View):
def __init__(self, converser_cog, user_id):
def __init__(self, ctx, converser_cog, user_id):
super().__init__(timeout=3600) # 1 hour interval to redo.
self.converser_cog = converser_cog
self.ctx = ctx
self.add_item(RedoButton(self.converser_cog))
if user_id in self.converser_cog.conversating_users:
@ -902,9 +903,14 @@ class RedoView(discord.ui.View):
# Remove the button from the view/message
self.clear_items()
# Send a message to the user saying the view has timed out
await self.message.edit(
view=None,
)
if self.message:
await self.message.edit(
view=None,
)
else:
await self.ctx.edit(
view=None,
)
class EndConvoButton(discord.ui.Button["RedoView"]):

@ -6,6 +6,15 @@ from pathlib import Path
import discord
from dotenv import load_dotenv
from pycord.multicog import apply_multicog
import os
if sys.platform == "win32":
separator = "\\"
else:
separator = "/"
print("The environment file is located at " + os.getcwd() + separator + ".env")
load_dotenv(dotenv_path=os.getcwd() + separator + ".env")
from cogs.draw_image_generation import DrawDallEService
from cogs.gpt_3_commands_and_converser import GPT3ComCon
@ -15,9 +24,7 @@ from models.message_model import Message
from models.openai_model import Model
from models.usage_service_model import UsageService
__version__ = "2.1.2"
load_dotenv()
import os
__version__ = "2.1.3"
"""
Message queueing for the debug service, defer debug messages to be sent later so we don't hit rate limits.

@ -18,8 +18,6 @@ classifiers = [
"Programming Language :: Python :: 3.9",
]
dependencies = [
"asgiref",
"openai",
"Pillow",
"py-cord",
"python-dotenv",

@ -1,5 +1,3 @@
asgiref==3.6.0
openai==0.25.0
Pillow==9.3.0
py-cord==2.3.2
python-dotenv==0.21.0

Loading…
Cancel
Save