48 lines
1.6 KiB
Python
48 lines
1.6 KiB
Python
import discord
|
|
import os
|
|
from redbot.core import Config, checks, commands
|
|
import openai
|
|
|
|
class ReginaldGptCog(commands.Cog):
|
|
def __init__(self, bot):
|
|
self.bot = bot
|
|
self.config = Config.get_conf(self, identifier=71717171171717)
|
|
self.config.register_global(api_key=None)
|
|
|
|
@commands.guild_only()
|
|
@checks.admin_or_permissions(manage_guild=True)
|
|
async def reginaldgpt(self, ctx, *, message):
|
|
try:
|
|
api_key = await self.config.api_key()
|
|
openai.api_key = api_key
|
|
|
|
response = openai.ChatCompletion.create(
|
|
model="gpt-3.5-turbo",
|
|
messages=[
|
|
{"role": "system", "content": "You are a helpful assistant who responds succinctly"},
|
|
{"role": "user", "content": message}
|
|
]
|
|
)
|
|
|
|
content = response['choices'][0]['text']
|
|
finish_reason = response['choices'][0]['finish_reason']
|
|
|
|
if finish_reason == 'stop':
|
|
await ctx.send(content)
|
|
else:
|
|
await ctx.send(f"Response not completed. Finish reason: {finish_reason}")
|
|
|
|
except Exception as e:
|
|
await ctx.send("As an AI robot, I errored out.")
|
|
|
|
@commands.guild_only()
|
|
@checks.admin_or_permissions(manage_guild=True)
|
|
@commands.command()
|
|
async def setreginaldgptapikey(self, ctx, api_key):
|
|
await self.config.api_key.set(api_key)
|
|
openai.api_key = api_key
|
|
await ctx.send("ReginaldGpt API key has been set.")
|
|
|
|
def setup(bot):
|
|
cog = ReginaldGptCog(bot)
|
|
bot.add_cog(cog) |