Image

Python sohbet botunun performansını test etmek için, hazır sorular ve cevaplar kullanarak önceden yapılandırılmış telegram bot sunucusu kullandık. Bu bot, önceden hazırlanmış sorulara ve cevaplara, answers.txt dosyasındaki verilere dayanarak yanıt verebilir ve ayrıca bir günlük tutabilir.

Kuruluma geçelim:

source my-tel-bot/bin/activate
pip install fuzzywuzzy
pip install python-Levenshtein

mkdir /root/my-tel-bot/data
chmod 775 /root/my-tel-bot/data

Sorular ve cevaplar içeren bir dosya hazırlayalım:

nano /root/my-tel-bot/data/answers.txt

u: merhaba
Sohbet botuna hoş geldiniz
u: adınız ne
Bro Bot!
u: kaç yaşındasınız
Neredeyse hiç
u: ne yapabilirsiniz
Veritabanıma answers.txt dosyasına ekleyebilirsiniz

Demo botumuzu mevcut olanla değiştirelim:

/root/my-tel-bot/bot.py

import telebot
import os
from fuzzywuzzy import fuzz

# Botu oluşturma, kendi token’inizi yazın
bot = telebot.TeleBot('BotFather’dan alınan anahtar')

# Cümleler ve cevaplar listesini bir diziye yükleyelim
mas = []
if os.path.exists('data/answers.txt'):
f = open('data/answers.txt', 'r', encoding='UTF-8')
for x in f:
if(len(x.strip()) > 2):
mas.append(x.strip().lower())
f.close()

# Fuzzywuzzy kullanarak, en benzer cümleyi hesaplayalım ve listenin bir sonraki öğesini cevap olarak verelim
def answer(text):
try:
text = text.lower().strip()
if os.path.exists('data/answers.txt'):
a = 0
n = 0
nn = 0
for q in mas:
if('u: ' in q):

# Fuzzywuzzy kullanarak iki metnin ne kadar benzer olduğunu hesaplayalım
aa = (fuzz.token_sort_ratio(q.replace('u: ',''), text))
if(aa > a and aa != a):
a = aa
nn = n
n = n + 1
s = mas[nn + 1]
return s
else:
return 'Hata'
except:
return 'Hata'

# /Start komutu
@bot.message_handler(commands=["start"])
def start(m, res=False):
bot.send_message(m.chat.id, 'Ben buradayım. Bana merhaba yazın )')

# Kullanıcıdan gelen mesajları alma
@bot.message_handler(content_types=["text"])
def handle_text(message):

# Günlük tutma
f = open('data/' + str(message.chat.id) + '_log.txt', 'a', encoding='UTF-8')
s = answer(message.text)
f.write('u: ' + message.text + '\n' + s + '\n')
f.close()

# Yanıt gönderme
bot.send_message(message.chat.id, s)

# Botu başlatalım
bot.polling(none_stop=True, interval=0)

İşlem tamam, scriptte anahtar token’inizi belirtmeyi unutmayın ve servisi yeniden başlatın:

service my-tel-bot restart



No Comments Yet