From d0930de760f7291062962d7f0d58dd84a9bfc1dc Mon Sep 17 00:00:00 2001 From: zongor Date: Tue, 11 Apr 2023 17:44:26 -0400 Subject: [PATCH] upgrade to use pycord --- marx.py | 73 +++++++++++++++++++++++++++++++++++---------------------- 1 file changed, 45 insertions(+), 28 deletions(-) diff --git a/marx.py b/marx.py index 78b5ea1..a6a4a2a 100755 --- a/marx.py +++ b/marx.py @@ -1,36 +1,53 @@ #!/bin/python3.10 +import sys import os +import random + import discord +from discord.ext import commands from llama_cpp import Llama from dotenv import load_dotenv - -class MyClient(discord.Client): - async def on_ready(self): - print('Logged on as', self.user) - - async def on_message(self, message): - # don't respond to ourselves - if message.author == self.user: - return - - if f"""<@{client.user.id}>""" in message.content: - - question = f"""Text transcript of a never ending dialog, where {message.author} interacts with Karl Marx. -Karl is helpful, kind, honest, friendly, good at writing and never fails to answer {message.author}’s requests immediately and with details and precision. -There are no annotations like (30 seconds passed...) or (to himself), just what {message.author} and Karl say aloud to each other. -The dialog lasts for years, the entirety of it is shared below. It's 10000 pages long. - -{message.author}: What is Communism? -Karl Marx: Communism is the doctrine of the conditions of the liberation of the proletariat. -{message.author}: {message.content}""" - - await message.channel.send(llm(question, max_tokens=256, stop=[f"""{message.author}"""], echo=True)["choices"][0]["text"][len(question):]) - +description = """ +An example bot to showcase the discord.ext.commands extension module. +There are a number of utility commands being showcased here. +""" load_dotenv() -llm = Llama(model_path="./models/7B/ggml-model-q4_0.bin") -intents = discord.Intents.default() -intents.message_content = True -client = MyClient(intents=intents) -client.run(os.environ.get("DISCORD_TOKEN")) +llm = Llama(model_path="./models/gpt4all-7B/gpt4all-lora-quantized.bin") + +bot = commands.Bot( + command_prefix=commands.when_mentioned_or("!"), + description=description, + intents=discord.Intents.all(), +) + + +@bot.event +async def on_ready(): + print(f"Logged in as {bot.user} (ID: {bot.user.id})") + + +@bot.event +async def on_message(message: discord.Message): + msg = "" + # Make sure we won't be replying to ourselves. + if message.author.id == bot.user.id: + return + + if f"""<@{bot.user.id}>""" in message.content: + async with message.channel.typing(): + question = f"""Text transcript of a never ending dialog, where {message.author} interacts with Karl Marx. + Karl is helpful, kind, honest, friendly, good at writing and never fails to answer {message.author}’s requests immediately and with details and precision. + There are no annotations like (30 seconds passed...) or (to himself), just what {message.author} and Karl say aloud to each other. + The dialog lasts for years, the entirety of it is shared below. It's 10000 pages long. + + {message.author}: What is Communism? + Karl Marx: Communism is the doctrine of the conditions of the liberation of the proletariat. + {message.author}: {message.content}""" + msg = llm(question, max_tokens=256, stop=[f"""{message.author}"""], echo=True)[ + "choices"][0]["text"][len(question):] + + await message.channel.send(msg) + +bot.run(os.environ.get("DISCORD_TOKEN"))