49 lines
1.4 KiB
Python
49 lines
1.4 KiB
Python
import sqlite3
|
||
|
||
|
||
class DatabaseManager:
|
||
def __init__(self,db_name="bot_hafiza.db"):
|
||
self.db_name=db_name
|
||
self.tabloyu_hazirla()
|
||
|
||
|
||
def baglan(self):
|
||
return sqlite3.connect(self.db_name)
|
||
|
||
|
||
def tabloyu_hazirla(self):
|
||
sql_komutu = """
|
||
CREATE TABLE IF NOT EXISTS hafiza (
|
||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||
user_id INTEGER,
|
||
role TEXT,
|
||
content TEXT,
|
||
timestamp DATETIME DEFAULT CURRENT_TIMESTAMP
|
||
)
|
||
"""
|
||
with self.baglan() as conn:
|
||
cursor=conn.cursor()
|
||
cursor.execute(sql_komutu)
|
||
conn.commit()
|
||
|
||
|
||
def mesaj_kaydet(self, user_id, role, content):
|
||
"""Sohbetin her adımını veritabanına bir satır olarak ekler."""
|
||
sql = "INSERT INTO hafiza (user_id, role, content) VALUES (?, ?, ?)"
|
||
|
||
with self.baglan() as conn:
|
||
cursor = conn.cursor()
|
||
cursor.execute(sql, (user_id, role, content))
|
||
conn.commit()
|
||
|
||
def gecmisi_getir(self, user_id, limit=10 ):
|
||
"""Gemini'ye hatırlatmak için son 10 mesajı veritabanından çeker."""
|
||
sql = "SELECT role, content FROM hafiza WHERE user_id = ? ORDER BY id DESC LIMIT ?"
|
||
|
||
with self.baglan() as conn:
|
||
cursor = conn.cursor()
|
||
cursor.execute(sql, (user_id, limit))
|
||
sonuclar = cursor.fetchall()
|
||
|
||
return sonuclar[::-1]
|