from difflib import get_close_matches
import sqlite3
from sqlite3 import Error
db_file_name="bot.db"
def soru_cevap_yaz(soru,cevap):
try:
con=db_connect()
sorgu="insert into sorular(soru,cevap) values('"+soru+"','"+cevap+"')"
cursor=con.cursor()
cursor.execute(sorgu)
con.commit()
except Error as e:
print(e)
def soru_bul(soru, sorular):
eslesen = get_close_matches(soru, sorular, n=1, cutoff=0.6)
if (eslesen):
return eslesen[0]
else:
return None
def cevap_bul(soru, veritabani):
for soru_cevaplar in veritabani:
if soru_cevaplar[0] == soru:
return soru_cevaplar[1]
return None
def chat_bot():
while True:
veritabani = sorulari_yukle()
soru = input("Siz: ")
if soru == 'çık':
break
if (soru == 'sil'):
cevap=sorulari_sil()
if cevap==True:
print("Tüm sorular silindi")
else:
print("Sorular Silinemedi !")
else:
gelen_sonuc = soru_bul(soru, [row[0] for row in veritabani])
if gelen_sonuc:
verilecek_cevap = cevap_bul(gelen_sonuc, veritabani)
print(f"Bot: {verilecek_cevap}")
else:
print("Bot: Sizi anlayamadım !. Öğretir misiniz ?")
yeni_cevap = input("Öğretmek için yazabilir veya 'geç' diyebilirsiniz. ")
if yeni_cevap != 'geç':
soru_cevap_yaz(soru,yeni_cevap)
print("Bot: Teşekkür ederim, öğrendim.")
def sorulari_yukle():
try:
con=db_connect()
cursor=con.cursor()
sorgu ="select soru,cevap from sorular"
cursor.execute(sorgu)
sorular=cursor.fetchall()
return sorular
except Error as e:
print(e)
return None
def sorulari_sil():
try:
con=db_connect()
cursor=con.cursor()
sorgu ="delete from sorular"
cursor.execute(sorgu)
con.commit()
return True
except Error as e:
print(e)
return False
def db_connect():
try:
con=sqlite3.connect(db_file_name)
return con
except Error as e:
print(e)
return None
def db_create():
try:
con=db_connect()
table ="create table if not exists sorular(id integer primary key autoincrement, soru varchar(255), cevap varchar(255));"
con.execute(table)
except Error as e:
print(e)
con=None
return con
if __name__ == '__main__':
db_create()
chat_bot()