Image

(Son değişiklik: 06.11.2024)

WikiPedia Python botunun işlevselliğini test etmek için, önceden yapılandırılmış telegram bot sunucusu kullandık. Bu bot, WikiPedia veritabanında bulunan sorgulara yanıt verebilir ve bilgi gönderebilir.

Kuruluma geçelim:

source my-tel-bot/bin/activate
pip3 install wikipedia

Demo botumuzu mevcut olanla değiştirelim:

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

import telebot, wikipedia, re

# Bot örneği oluşturma
bot = telebot.TeleBot('BotFather’dan alınan anahtar')

# Wikipedia’da Rusça dilini yükleyelim
wikipedia.set_lang("ru")

# Wikipedia makalesinin metnini temizleyelim ve bin karakterle sınırlayalım
def getwiki(s):
try:
ny = wikipedia.page(s)

# İlk bin karakteri alma
wikitext = ny.content[:1000]

# Noktaya göre ayıralım
wikimas = wikitext.split('.')

# Son noktadan sonrasını atıyoruz
wikimas = wikimas[:-1]

# Metin için boş bir değişken oluşturalım
wikitext2 = ''

# Eşittir işareti içermeyen satırlarda gezinelim (başlıklar hariç her şey)
for x in wikimas:
if not('==' in x):

# Eğer satırda üç karakterden fazla varsa, bunu değişkenimize ekleyelim ve satırları böldüğümüzde kaybolan noktaları yerine koyalım
if(len((x.strip())) > 3):
wikitext2 = wikitext2 + x + '.'
else:
break

# Şimdi, düzenli ifadelerle işaretlemeyi kaldıralım
wikitext2 = re.sub('\([^()]*\)', '', wikitext2)
wikitext2 = re.sub('\([^()]*\)', '', wikitext2)
wikitext2 = re.sub('\{[^\{\}]*\}', '', wikitext2)

# Metin dizisini döndürelim
return wikitext2

# Wikipedia modülünün isteği geri dönerken bir istisna durumu ile karşılaşması durumunda hatayı yakalayalım
except Exception as e:
return 'Ansiklopedide bununla ilgili bilgi bulunmamaktadır.'

# /start komutunu işleyen fonksiyon
@bot.message_handler(commands=["start"])
def start(m, res=False):
bot.send_message(m.chat.id, 'Bana herhangi bir kelime gönder, ben de bunu Wikipedia’da arayayım')

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

# 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