Init
This commit is contained in:
parent
a34dd0624b
commit
019df57092
6 changed files with 270 additions and 0 deletions
BIN
assets/banner.jpg
Executable file
BIN
assets/banner.jpg
Executable file
Binary file not shown.
After Width: | Height: | Size: 34 KiB |
BIN
assets/banner.png
Executable file
BIN
assets/banner.png
Executable file
Binary file not shown.
After Width: | Height: | Size: 34 KiB |
BIN
assets/logo.jpg
Executable file
BIN
assets/logo.jpg
Executable file
Binary file not shown.
After Width: | Height: | Size: 5.1 KiB |
BIN
assets/logo.png
Executable file
BIN
assets/logo.png
Executable file
Binary file not shown.
After Width: | Height: | Size: 7.6 KiB |
136
main.py
Executable file
136
main.py
Executable file
|
@ -0,0 +1,136 @@
|
||||||
|
import discord
|
||||||
|
from discord import app_commands
|
||||||
|
from discord.ext import commands, tasks
|
||||||
|
import requests
|
||||||
|
import threading
|
||||||
|
import random
|
||||||
|
import time
|
||||||
|
import json
|
||||||
|
from llama_cpp import Llama
|
||||||
|
|
||||||
|
with open("settings.json", "r") as file:
|
||||||
|
settings = json.load(file)
|
||||||
|
|
||||||
|
LLM = Llama(
|
||||||
|
model_path=settings["llama"]["model"],
|
||||||
|
n_ctx=settings["llama"]["ctx"],
|
||||||
|
n_threads=settings["llama"]["threads"],
|
||||||
|
n_gpu_layers=settings["llama"]["gpu"],
|
||||||
|
top_k=settings["llama"]["top_k"],
|
||||||
|
repeat_penality=settings["llama"]["repeat_penality"],
|
||||||
|
echo=False,
|
||||||
|
verbose=False)
|
||||||
|
if len(list(settings["llama"]["system_token"])) == 2:
|
||||||
|
SYS_PROMPT = list(settings["llama"]["system_token"])[0] + settings["llama"]["system_prompt"] + list(settings["llama"]["system_token"])[1]
|
||||||
|
elif len(list(settings["llama"]["system_token"])) == 1:
|
||||||
|
SYS_PROMPT = list(settings["llama"]["system_token"])[0] + settings["llama"]["system_prompt"]
|
||||||
|
else:
|
||||||
|
SYS_PROMPT = settings["llama"]["system_prompt"]
|
||||||
|
USER_TOKEN = list(settings["llama"]["user_token"])
|
||||||
|
SYNC = settings["bot"]["sync"]
|
||||||
|
UWU_ACT = list(settings["uwu"]["act"])
|
||||||
|
UWU_REPLACE = dict(settings["uwu"]["replace"])
|
||||||
|
CONSONNES = list(settings["uwu"]["consonnes"])
|
||||||
|
LISTE_GIF = list(settings["gifs"])
|
||||||
|
|
||||||
|
intents = discord.Intents.default()
|
||||||
|
bot = commands.Bot(command_prefix="+", intents=intents, help_command=None)
|
||||||
|
tree = bot.tree
|
||||||
|
queue = []
|
||||||
|
|
||||||
|
def texttouwu(text: str) -> str:
|
||||||
|
uwu_text = ""
|
||||||
|
for i in range(1, len(text) - 1):
|
||||||
|
if random.randint(0, 2) == 1:
|
||||||
|
if text[i] in UWU_REPLACE:
|
||||||
|
uwu_text += UWU_REPLACE[text[i]]
|
||||||
|
elif text[i - 1] == " " and text[i] in CONSONNES:
|
||||||
|
uwu_text += f"{text[i]}-{text[i]}"
|
||||||
|
else:
|
||||||
|
uwu_text += text[i]
|
||||||
|
else:
|
||||||
|
if text[i - 1] == " " and random.randint(0, 10) == 0:
|
||||||
|
uwu_text += random.choice(UWU_ACT)
|
||||||
|
uwu_text += text[i]
|
||||||
|
return text[0] + uwu_text + text[-1]
|
||||||
|
|
||||||
|
|
||||||
|
def get_gif(gif):
|
||||||
|
if gif.lower() == "list":
|
||||||
|
output = "Here is the list of all possible gifs:\n"
|
||||||
|
for name in LISTE_GIF:
|
||||||
|
output += name + ", "
|
||||||
|
return output[:-2]
|
||||||
|
gif = requests.get(f"https://api.otakugifs.xyz/gif?reaction={gif.lower()}").json()
|
||||||
|
try:
|
||||||
|
return gif["url"]
|
||||||
|
except:
|
||||||
|
return f"No gif '{gif}'"
|
||||||
|
|
||||||
|
|
||||||
|
def generate(prompt):
|
||||||
|
if len(USER_TOKEN) == 2:
|
||||||
|
user_prompt = USER_TOKEN[0] + prompt + USER_TOKEN[1]
|
||||||
|
elif len(USER_TOKEN) == 1:
|
||||||
|
user_prompt = USER_TOKEN[0] + prompt
|
||||||
|
else:
|
||||||
|
user_prompt = prompt
|
||||||
|
res = LLM(SYS_PROMPT + user_prompt, max_tokens=128, stop=["</s>"])
|
||||||
|
story = str(res["choices"][0]["text"])
|
||||||
|
return story[2:].capitalize()
|
||||||
|
|
||||||
|
|
||||||
|
def send_answer(id, token, content):
|
||||||
|
url = f"https://discord.com/api/v10/webhooks/{id}/{token}/messages/@original"
|
||||||
|
json = {
|
||||||
|
"content": content,
|
||||||
|
}
|
||||||
|
code = requests.patch(url, data=json)
|
||||||
|
return code
|
||||||
|
|
||||||
|
|
||||||
|
def work():
|
||||||
|
global queue
|
||||||
|
while True:
|
||||||
|
if not queue == []:
|
||||||
|
output = queue[0][1](queue[0][0])
|
||||||
|
send_answer(queue[0][2], queue[0][3], output)
|
||||||
|
queue.pop(0)
|
||||||
|
time.sleep(0.1)
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
@bot.tree.command(name="speak", description="Speak with Whispers!")
|
||||||
|
@app_commands.describe(message="The message you want to send to Whispers.")
|
||||||
|
async def speak(interaction, message: str):
|
||||||
|
global queue
|
||||||
|
await interaction.response.defer(thinking=True)
|
||||||
|
queue.append([message, generate, interaction.application_id, interaction.token])
|
||||||
|
|
||||||
|
|
||||||
|
@bot.tree.command(name="uwu", description="Translate your message to uwu")
|
||||||
|
@app_commands.describe(nonuwu="The message you want to translate.")
|
||||||
|
async def uwu(interaction, nonuwu: str):
|
||||||
|
global queue
|
||||||
|
await interaction.response.defer(thinking=True)
|
||||||
|
queue.append([nonuwu, texttouwu, interaction.application_id, interaction.token])
|
||||||
|
|
||||||
|
|
||||||
|
@bot.tree.command(
|
||||||
|
name="gif",
|
||||||
|
description="Send a gif corresponding to a topic, type 'list' to get the possible gifs",
|
||||||
|
)
|
||||||
|
@app_commands.describe(topic="The the topic of the gif")
|
||||||
|
async def gif(interaction, topic: str):
|
||||||
|
global queue
|
||||||
|
await interaction.response.defer(thinking=True)
|
||||||
|
queue.append([topic, get_gif, interaction.application_id, interaction.token])
|
||||||
|
|
||||||
|
|
||||||
|
@bot.event
|
||||||
|
async def on_ready():
|
||||||
|
if SYNC == "1":
|
||||||
|
await tree.sync()
|
||||||
|
|
||||||
|
threading.Thread(target=work).start()
|
||||||
|
bot.run(settings["bot"]["token"])
|
134
settings.json
Executable file
134
settings.json
Executable file
|
@ -0,0 +1,134 @@
|
||||||
|
{
|
||||||
|
"llama": {
|
||||||
|
"model": "YOUR LLAMA .GGUF HERE",
|
||||||
|
"ctx": 16000,
|
||||||
|
"threads": 4,
|
||||||
|
"gpu": 0,
|
||||||
|
"top_k": 50,
|
||||||
|
"repeat_penality": 1.5,
|
||||||
|
"system_prompt": "SYS PROMPT HERE",
|
||||||
|
"system_token": ["<|im_start|>system\n", "<|im_end|>\n"],
|
||||||
|
"user_token": ["<|im_start|>user\n", "<|im_end|>\n<|im_start|>assistant"]
|
||||||
|
},
|
||||||
|
"bot": {
|
||||||
|
"token": "YOUR TOKEN HERE",
|
||||||
|
"sync": 0
|
||||||
|
},
|
||||||
|
"uwu": {
|
||||||
|
"act": [
|
||||||
|
"*sweat* ",
|
||||||
|
"*screams* ",
|
||||||
|
"*purr* ",
|
||||||
|
"*blush* ",
|
||||||
|
"*meow* ",
|
||||||
|
"😊 ",
|
||||||
|
"\u2764\uFE0F ",
|
||||||
|
"\u2728 ",
|
||||||
|
"🌼 ",
|
||||||
|
"🌟 ",
|
||||||
|
"🥺 ",
|
||||||
|
"💕 ",
|
||||||
|
"\u0028\u002A\u005E\u03C9\u005E\u002A\u0029 ",
|
||||||
|
"\u0028\u2044\u0020\u2044\u2022\u2044\u03C9\u2044\u2022\u2044\u0020\u2044\u0029 "
|
||||||
|
],
|
||||||
|
"replace": {
|
||||||
|
"l": "w",
|
||||||
|
"r": "w",
|
||||||
|
"L": "W",
|
||||||
|
"R": "W"
|
||||||
|
},
|
||||||
|
"consonnes": [
|
||||||
|
"b",
|
||||||
|
"c",
|
||||||
|
"d",
|
||||||
|
"f",
|
||||||
|
"g",
|
||||||
|
"h",
|
||||||
|
"j",
|
||||||
|
"k",
|
||||||
|
"l",
|
||||||
|
"m",
|
||||||
|
"n",
|
||||||
|
"p",
|
||||||
|
"q",
|
||||||
|
"r",
|
||||||
|
"s",
|
||||||
|
"t",
|
||||||
|
"v",
|
||||||
|
"w",
|
||||||
|
"x",
|
||||||
|
"y",
|
||||||
|
"z"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"gifs": [
|
||||||
|
"airkiss",
|
||||||
|
"angrystare",
|
||||||
|
"bite",
|
||||||
|
"bleh",
|
||||||
|
"blush",
|
||||||
|
"brofist",
|
||||||
|
"celebrate",
|
||||||
|
"cheers",
|
||||||
|
"clap",
|
||||||
|
"confused",
|
||||||
|
"cool",
|
||||||
|
"cry",
|
||||||
|
"cuddle",
|
||||||
|
"dance",
|
||||||
|
"drool",
|
||||||
|
"evillaugh",
|
||||||
|
"facepalm",
|
||||||
|
"handhold",
|
||||||
|
"happy",
|
||||||
|
"headbang",
|
||||||
|
"hug",
|
||||||
|
"kiss",
|
||||||
|
"laugh",
|
||||||
|
"lick",
|
||||||
|
"love",
|
||||||
|
"mad",
|
||||||
|
"nervous",
|
||||||
|
"no",
|
||||||
|
"nom",
|
||||||
|
"nosebleed",
|
||||||
|
"nuzzle",
|
||||||
|
"nyah",
|
||||||
|
"pat",
|
||||||
|
"peek",
|
||||||
|
"pinch",
|
||||||
|
"poke",
|
||||||
|
"pout",
|
||||||
|
"punch",
|
||||||
|
"roll",
|
||||||
|
"run",
|
||||||
|
"sad",
|
||||||
|
"scared",
|
||||||
|
"shout",
|
||||||
|
"shrug",
|
||||||
|
"shy",
|
||||||
|
"sigh",
|
||||||
|
"sip",
|
||||||
|
"slap",
|
||||||
|
"sleep",
|
||||||
|
"slowclap",
|
||||||
|
"smack",
|
||||||
|
"smile",
|
||||||
|
"smug",
|
||||||
|
"sneeze",
|
||||||
|
"sorry",
|
||||||
|
"stare",
|
||||||
|
"stop",
|
||||||
|
"surprised",
|
||||||
|
"sweat",
|
||||||
|
"thumbsup",
|
||||||
|
"tickle",
|
||||||
|
"tired",
|
||||||
|
"wave",
|
||||||
|
"wink",
|
||||||
|
"woah",
|
||||||
|
"yawn",
|
||||||
|
"yay",
|
||||||
|
"yes"
|
||||||
|
]
|
||||||
|
}
|
Loading…
Add table
Reference in a new issue