diff --git a/reginaldCog/reginald.py b/reginaldCog/reginald.py index ce8756a..a9b67c0 100644 --- a/reginaldCog/reginald.py +++ b/reginaldCog/reginald.py @@ -1,7 +1,5 @@ import openai from redbot.core import Config, commands -from threading import Lock -from ratelimit import rate_limited class ReginaldCog(commands.Cog): def __init__(self, bot): @@ -11,34 +9,32 @@ class ReginaldCog(commands.Cog): openai_api_key="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", openai_model="text-davinci-002" ) - self.lock = Lock() - @rate_limited(1, 10) # Limits command execution to 1 per 10 seconds + @commands.guild_only() + @commands.has_permissions(manage_guild=True) @commands.command() - @commands.has_permissions(administrator=True) async def reginald(self, ctx, *, prompt=None): """Ask Reginald a question""" if prompt is None: prompt = "Hey," - async with ctx.typing(), self.lock: - try: - self.api_key = await self.config.openai_api_key() - self.model = await self.config.openai_model() - openai.api_key = self.api_key - max_tokens = min(len(prompt) * 2, 2048) - response = openai.Completion.create( - model=self.model, - prompt=prompt, - max_tokens=max_tokens, - n=1, - stop=None, - temperature=0.5, - ) - await ctx.send(response.choices[0].text.strip()) - except openai.error.OpenAIError as e: - await ctx.send("I apologize, sir, but I am unable to generate a response at this time.") - print(f"OpenAI API Error: {e}") + try: + api_key = await self.config.openai_api_key() + model = await self.config.openai_model() + openai.api_key = api_key + max_tokens = min(len(prompt) * 2, 2048) + response = openai.Completion.create( + model=model, + prompt=prompt, + max_tokens=max_tokens, + n=1, + stop=None, + temperature=0.5, + ) + await ctx.send(response.choices[0].text.strip()) + except openai.error.OpenAIError as e: + await ctx.send("I apologize, sir, but I am unable to generate a response at this time.") + print(f"OpenAI API Error: {e}") def setup(bot): cog = ReginaldCog(bot) - bot.add_cog(cog) + bot.add_cog(cog) \ No newline at end of file