Merge branch 'main' into slashgroups-refactor

Rene Teigen 2 years ago
commit 4657d9d814

@ -1,6 +1,6 @@
# These are supported funding model platforms # 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 patreon: # Replace with a single Patreon username
open_collective: # Replace with a single Open Collective username open_collective: # Replace with a single Open Collective username
ko_fi: # Replace with a single Ko-fi 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 issuehunt: # Replace with a single IssueHunt username
otechie: # Replace with a single Otechie username otechie: # Replace with a single Otechie username
lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry 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-get update
sudo apt install software-properties-common sudo apt install software-properties-common
sudo add-apt-repository ppa:deadsnakes/ppa 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 # Install project dependencies
python3.9 -m pip install -r requirements.txt python3.9 -m pip install -r requirements.txt
@ -125,6 +130,18 @@ screen gpt3discord
screen -r 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 ## 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. 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 # 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( 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] = [] self.converser_cog.users_to_interactions[user_id] = []
@ -94,7 +94,7 @@ class DrawDallEService(discord.Cog, name="DrawDallEService"):
file=file, file=file,
) )
await message.edit( 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 else: # Varying case
if not draw_from_optimizer: if not draw_from_optimizer:
@ -105,7 +105,12 @@ class DrawDallEService(discord.Cog, name="DrawDallEService"):
) )
await result_message.edit( await result_message.edit(
view=SaveView( 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( await result_message.edit(
view=SaveView( 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): class SaveView(discord.ui.View):
def __init__( 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__( super().__init__(
timeout=3600 if not only_save else None 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.image_urls = image_urls
self.cog = cog self.cog = cog
self.no_retry = no_retry 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 # Create a new view with the same params as this one, but pass only_save=True
new_view = SaveView( new_view = SaveView(
self.ctx,
self.image_urls, self.image_urls,
self.cog, self.cog,
self.converser_cog, self.converser_cog,
@ -239,7 +253,7 @@ class SaveView(discord.ui.View):
) )
# Set the view of the message to the new 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): class VaryButton(discord.ui.Button):

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

@ -6,6 +6,15 @@ from pathlib import Path
import discord import discord
from dotenv import load_dotenv from dotenv import load_dotenv
from pycord.multicog import apply_multicog 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.draw_image_generation import DrawDallEService
from cogs.gpt_3_commands_and_converser import GPT3ComCon 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.openai_model import Model
from models.usage_service_model import UsageService from models.usage_service_model import UsageService
__version__ = "2.1.2" __version__ = "2.1.3"
load_dotenv()
import os
""" """
Message queueing for the debug service, defer debug messages to be sent later so we don't hit rate limits. 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", "Programming Language :: Python :: 3.9",
] ]
dependencies = [ dependencies = [
"asgiref",
"openai",
"Pillow", "Pillow",
"py-cord", "py-cord",
"python-dotenv", "python-dotenv",

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

Loading…
Cancel
Save