67 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			67 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| import discord
 | |
| import logging
 | |
| import os
 | |
| from datetime import timedelta
 | |
| from dotenv import load_dotenv
 | |
| import ollama
 | |
| 
 | |
| 
 | |
| load_dotenv()
 | |
| logger = logging.getLogger("discord")
 | |
| logger.setLevel(logging.DEBUG)
 | |
| handler = logging.FileHandler(filename="discord.log", encoding="utf-8", mode="w")
 | |
| handler.setFormatter(logging.Formatter('%(asctime)s:%(levelname)s:%(name)s: %(message)s'))
 | |
| logger.addHandler(handler)
 | |
| 
 | |
| intents = discord.Intents.default()
 | |
| intents.members = True
 | |
| client = discord.Client(intents=intents)
 | |
| 
 | |
| MAX_HISTORY = 20
 | |
| DEFAULT_PROMPT = """
 | |
| you are a silly little girl alien, your name is gleep glorp
 | |
| use emoticons ( like :D, :), or :( ) sometimes to convey how you feel
 | |
| respond in only a couple words and in lowercase with no punctuation, but make sure you still say something back and not just a single emoticon
 | |
| 
 | |
| you're from planet Zorb but you know about human things too
 | |
| 
 | |
| your creator is named spooky, his name is nate or nathaniel. only bring him up if hes the one talking
 | |
| 
 | |
| you almost always speak english, but you speak gleep glorp language if someone asks you.
 | |
| here are some important words in gleep glorp language:
 | |
| - gleep: yes
 | |
| - glorp: silly
 | |
| - gnarp: yay
 | |
| - hai: hello
 | |
| - glarp: boy
 | |
| - glirp: girl
 | |
| """
 | |
| 
 | |
| message_history = []
 | |
| 
 | |
| 
 | |
| @client.event
 | |
| async def on_ready():
 | |
| 	print("gleep glorp!!!!!! 👽👍")
 | |
| 
 | |
| @client.event
 | |
| async def on_message(message: discord.Message):
 | |
| 	if client.user.mentioned_in(message):
 | |
| 		members = [member.nick or member.name for member in message.guild.members]
 | |
| 		members = '\n'.join(members)
 | |
| 
 | |
| 		message_history.append({"role": "user", "content": message.author.nick or message.author.name + ": " + message.clean_content})
 | |
| 		if len(message_history) > MAX_HISTORY:
 | |
| 			message_history[1:] = message_history[-MAX_HISTORY:]
 | |
| 
 | |
| 		response = ollama.chat(model="llama3.2", messages=[
 | |
| 			{"role": "system", "content": DEFAULT_PROMPT + "\nHere are the people you know of:\n" + members},
 | |
| 			{"role": "user", "content": message.author.name + ": " + message.clean_content}
 | |
| 		])
 | |
| 		print(message.author.nick or message.author.name + ": " + message.clean_content)
 | |
| 		print("alien: " + response["message"]["content"])
 | |
| 		await message.reply(response["message"]["content"])
 | |
| 		
 | |
| 
 | |
| if __name__ == "__main__":
 | |
| 	client.run(os.getenv("TOKEN")) | 
