Add NPC interaction system with memory and quest generation
- Introduced a new NPC system with dynamic NPCs and conversation handling. - Implemented NPC memory using SQLite to log conversations and manage relationships. - Added commands for talking to NPCs, listing available NPCs, and generating quests. - Updated database schema to support NPC conversations and relationships. - Refactored code structure to separate concerns into cogs and handlers.
This commit is contained in:
Executable → Regular
BIN
Binary file not shown.
Executable → Regular
BIN
Binary file not shown.
Executable → Regular
BIN
Binary file not shown.
Executable → Regular
BIN
Binary file not shown.
Executable → Regular
BIN
Binary file not shown.
+2
-2
@@ -3,7 +3,7 @@ from random import shuffle, choices, choice
|
||||
from discord.ext import commands
|
||||
from utils.sql_commands import DatabaseManager
|
||||
from utils.bank_functions import bank_data, update_money
|
||||
from datetime import datetime, timedelta
|
||||
from datetime import datetime
|
||||
import asyncio
|
||||
import random
|
||||
|
||||
@@ -94,7 +94,7 @@ class Deck:
|
||||
|
||||
|
||||
class Hand:
|
||||
def __init__(self, name, bet):
|
||||
def __init__(self, name:str, bet:int):
|
||||
self.cards = []
|
||||
self.value = 0
|
||||
self.aces = 0
|
||||
|
||||
+4
-5
@@ -1,4 +1,3 @@
|
||||
import discord
|
||||
from discord.ext import commands
|
||||
import smtplib
|
||||
from email.mime.multipart import MIMEMultipart
|
||||
@@ -10,7 +9,7 @@ from datetime import datetime
|
||||
|
||||
|
||||
class Mail(commands.Cog):
|
||||
def __init__(self, client):
|
||||
def __init__(self, client:commands.Bot):
|
||||
self.client = client
|
||||
load_dotenv()
|
||||
from utils.sql_commands import DatabaseManager
|
||||
@@ -19,7 +18,7 @@ class Mail(commands.Cog):
|
||||
|
||||
@commands.is_owner()
|
||||
@commands.command(name="mail_feedback")
|
||||
async def mail(self, ctx):
|
||||
async def mail(self, ctx:commands.Context[commands.Bot]):
|
||||
password = getenv("EMAILPASS")
|
||||
username = getenv("EMAILUSER")
|
||||
server = getenv("EMAILSERVER")
|
||||
@@ -44,7 +43,7 @@ class Mail(commands.Cog):
|
||||
msg["Subject"] = "Py feedback"
|
||||
|
||||
# Fetch feedback from the database
|
||||
feedback_rows = self.db.fetch_all("SELECT * FROM feedback")
|
||||
feedback_rows:list[dict[str,str]] = self.db.fetch_all("SELECT * FROM feedback")
|
||||
all_feedback = ""
|
||||
for i, row in enumerate(feedback_rows, 1):
|
||||
content = html.escape(row["CONTENT"])
|
||||
@@ -131,5 +130,5 @@ class Mail(commands.Cog):
|
||||
await ctx.reply(f"Failed to send mail: {e}", delete_after=5)
|
||||
|
||||
|
||||
async def setup(client):
|
||||
async def setup(client:commands.Bot):
|
||||
await client.add_cog(Mail(client))
|
||||
|
||||
+1
-1
@@ -241,5 +241,5 @@ class XP(commands.Cog):
|
||||
return image_bytes
|
||||
|
||||
|
||||
async def setup(client):
|
||||
async def setup(client: commands.Bot):
|
||||
await client.add_cog(XP(client))
|
||||
|
||||
Reference in New Issue
Block a user