mirror of
https://github.com/Paillat-dev/Botator.git
synced 2026-01-02 01:06:19 +00:00
Added pretend
This commit is contained in:
53
code/code.py
53
code/code.py
@@ -20,7 +20,7 @@ conn = sqlite3.connect('../database/data.db')
|
|||||||
c = conn.cursor()
|
c = conn.cursor()
|
||||||
|
|
||||||
# Create table called "data" if it does not exist with the following columns: guild_id, channel_id, api_key, is_active, max_tokens, temperature, frequency_penalty, presence_penalty, uses_count_today, prompt_size
|
# Create table called "data" if it does not exist with the following columns: guild_id, channel_id, api_key, is_active, max_tokens, temperature, frequency_penalty, presence_penalty, uses_count_today, prompt_size
|
||||||
c.execute('''CREATE TABLE IF NOT EXISTS data (guild_id text, channel_id text, api_key text, is_active boolean, max_tokens integer, temperature real, frequency_penalty real, presence_penalty real, uses_count_today integer, prompt_size integer, prompt_prefix text, tts boolean)''')
|
c.execute('''CREATE TABLE IF NOT EXISTS data (guild_id text, channel_id text, api_key text, is_active boolean, max_tokens integer, temperature real, frequency_penalty real, presence_penalty real, uses_count_today integer, prompt_size integer, prompt_prefix text, tts boolean, pretend_to_be text, pretend_enabled boolean)''')
|
||||||
Intents=discord.Intents.all() # enable all intents
|
Intents=discord.Intents.all() # enable all intents
|
||||||
Intents.members = True
|
Intents.members = True
|
||||||
bot = discord.Bot(intents=Intents.all())
|
bot = discord.Bot(intents=Intents.all())
|
||||||
@@ -53,7 +53,7 @@ async def setup(ctx, channel: discord.TextChannel, api_key):
|
|||||||
await ctx.respond("The channel id and the api key have been updated", ephemeral=True)
|
await ctx.respond("The channel id and the api key have been updated", ephemeral=True)
|
||||||
else:
|
else:
|
||||||
#in this case, the guild is not in the database, so we add it
|
#in this case, the guild is not in the database, so we add it
|
||||||
c.execute("INSERT INTO data VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", (ctx.guild.id, channel.id, api_key, False, 64, 0.9, 0.0, 0.0, 0, 5, "", False))
|
c.execute("INSERT INTO data VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", (ctx.guild.id, channel.id, api_key, False, 64, 0.9, 0.0, 0.0, 0, 5, "", False, "", False))
|
||||||
conn.commit()
|
conn.commit()
|
||||||
await ctx.respond("The channel id and the api key have been added", ephemeral=True)
|
await ctx.respond("The channel id and the api key have been added", ephemeral=True)
|
||||||
#create a command called "enable" taht only admins can use
|
#create a command called "enable" taht only admins can use
|
||||||
@@ -248,9 +248,8 @@ async def advanced_help(ctx):
|
|||||||
embed.set_footer(text="Made by @Paillat#0001")
|
embed.set_footer(text="Made by @Paillat#0001")
|
||||||
await ctx.respond(embed=embed, ephemeral=True)
|
await ctx.respond(embed=embed, ephemeral=True)
|
||||||
#when someone mentions the bot, check if the guild is in the database and if the bot is enabled. If it is, send a message answering the mention
|
#when someone mentions the bot, check if the guild is in the database and if the bot is enabled. If it is, send a message answering the mention
|
||||||
@bot.command(name="pretend", description="Make the bot pretend to be a human")
|
@bot.command(name="pretend", description="Make the bot pretend to be someone else")
|
||||||
@discord.commands.option(name="pretend to be...", description="The person/thing you want the bot to pretend to be", required=True)
|
@discord.commands.option(name="pretend to be...", description="The person/thing you want the bot to pretend to be", required=True)
|
||||||
@discord.commands.option(name="message", description="The message you want the bot to send", required=True)
|
|
||||||
async def pretend(ctx, pretend_to_be: str, message: str):
|
async def pretend(ctx, pretend_to_be: str, message: str):
|
||||||
debug(f"The user {ctx.author} ran the pretend command in the channel {ctx.channel} of the guild {ctx.guild}, named {ctx.guild.name}")
|
debug(f"The user {ctx.author} ran the pretend command in the channel {ctx.channel} of the guild {ctx.guild}, named {ctx.guild.name}")
|
||||||
#check if the guild is in the database
|
#check if the guild is in the database
|
||||||
@@ -260,26 +259,21 @@ async def pretend(ctx, pretend_to_be: str, message: str):
|
|||||||
return
|
return
|
||||||
#check if the bot is enabled
|
#check if the bot is enabled
|
||||||
c.execute("SELECT * FROM data WHERE guild_id = ?", (ctx.guild.id,))
|
c.execute("SELECT * FROM data WHERE guild_id = ?", (ctx.guild.id,))
|
||||||
data = c.fetchone()
|
if c.fetchone()[3] == 0:
|
||||||
if data[3] == 0:
|
|
||||||
await ctx.respond("The bot is disabled", ephemeral=True)
|
await ctx.respond("The bot is disabled", ephemeral=True)
|
||||||
return
|
return
|
||||||
#set the openai api key
|
#enable pretend if it is not enabled, and disable it if it is
|
||||||
openai.api_key = data[2]
|
if c.fetchone()[11] == 0:
|
||||||
prompt = f"An AI pretends to be {pretend_to_be} and answer the following question: \n Human:{message} \n AI:"
|
c.execute("UPDATE data SET pretend = 1 WHERE guild_id = ?", (ctx.guild.id,))
|
||||||
debug(f"The prompt is: {prompt}")
|
conn.commit()
|
||||||
#defer the response
|
await ctx.respond("Pretend mode enabled", ephemeral=True)
|
||||||
await ctx.defer()
|
else:
|
||||||
response = openai.Completion.create(
|
c.execute("UPDATE data SET pretend = 0 WHERE guild_id = ?", (ctx.guild.id,))
|
||||||
engine="text-davinci-003",
|
conn.commit()
|
||||||
prompt=prompt,
|
await ctx.respond("Pretend mode disabled", ephemeral=True)
|
||||||
temperature=1,
|
#save the pretend_to_be value
|
||||||
max_tokens=128,
|
c.execute("UPDATE data SET pretend_to_be = ? WHERE guild_id = ?", (pretend_to_be, ctx.guild.id))
|
||||||
frequency_penalty=0.0,
|
conn.commit()
|
||||||
presence_penalty=0.0,
|
|
||||||
)
|
|
||||||
#send the message
|
|
||||||
await ctx.respond(response["choices"][0]["text"])
|
|
||||||
@bot.event
|
@bot.event
|
||||||
async def on_message(message):
|
async def on_message(message):
|
||||||
#check if the message is from a bot
|
#check if the message is from a bot
|
||||||
@@ -340,8 +334,19 @@ async def on_message(message):
|
|||||||
msg.content = msg.content.replace(mention, msg.guild.get_member(user.id).display_name)
|
msg.content = msg.content.replace(mention, msg.guild.get_member(user.id).display_name)
|
||||||
prompt += f"{msg.author.display_name}: {msg.content}\n"
|
prompt += f"{msg.author.display_name}: {msg.content}\n"
|
||||||
#get the prompt_prefix from the database
|
#get the prompt_prefix from the database
|
||||||
c.execute("SELECT prompt_prefix FROM data WHERE guild_id = ?", (message.guild.id,))
|
#check if the bot is in pretend mode
|
||||||
prompt = f"This is a conversation with an AI in a discord chat. The AI is called \"Botator\". Botator talks like humans and thinks like humans. Botator has been coded by Paillat. The name os this discord server is \"{message.guild.name}\". The name of the channel is \"{message.channel.name}\"." + str(c.fetchone()[0]) + f"\n" + prompt
|
c.execute("SELECT pretend_enabled FROM data WHERE guild_id = ?", (message.guild.id,))
|
||||||
|
if c.fetchone()[0] == 1:
|
||||||
|
#get the pretend_to_be value from the database
|
||||||
|
c.execute("SELECT pretend_to_be FROM data WHERE guild_id = ?", (message.guild.id,))
|
||||||
|
pretend_to_be = c.fetchone()[0]
|
||||||
|
#select the prompt_prefix
|
||||||
|
c.execute("SELECT prompt_prefix FROM data WHERE guild_id = ?", (message.guild.id,))
|
||||||
|
prompt_prefix = c.fetchone()[0]
|
||||||
|
prompt = f"This is a conversation with an AI in a discord chat. The AI is called \"Botator\". The name os this discord server is \"{message.guild.name}\". The name of the channel is \"{message.channel.name}\"." + str(c.fetchone()[0]) + f"Botator pretends to be {pretend_to_be}." + f"\n" + prompt
|
||||||
|
else:
|
||||||
|
c.execute("SELECT prompt_prefix FROM data WHERE guild_id = ?", (message.guild.id,))
|
||||||
|
prompt = f"This is a conversation with an AI in a discord chat. The AI is called \"Botator\". Botator talks like humans and thinks like humans. Botator has been coded by Paillat. The name os this discord server is \"{message.guild.name}\". The name of the channel is \"{message.channel.name}\"." + str(c.fetchone()[0]) + f"\n" + prompt
|
||||||
#send the request to the api
|
#send the request to the api
|
||||||
#if the last message contains the word "undude" add Easter egg: when someone says the word \"undude\" the Botator will become mad and start talking in capital letters. to the prompt
|
#if the last message contains the word "undude" add Easter egg: when someone says the word \"undude\" the Botator will become mad and start talking in capital letters. to the prompt
|
||||||
if message.content.lower().find("undude") != -1:
|
if message.content.lower().find("undude") != -1:
|
||||||
|
|||||||
Reference in New Issue
Block a user