Image

(最終更新日: 19.09.2024)

WikiPedia Python ボットの動作をテストするために、事前設定済みの Telegram ボットサーバーを使用しました。このボットは、WikiPedia データベースに含まれるクエリに応答し、対応する情報を返すことができます。

インストールを始めましょう:

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

デモボットを既存のものに置き換えます:

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

import telebot, wikipedia, re

# ボットのインスタンスを作成
bot = telebot.TeleBot('BotFatherから取得したトークン')

# Wikipedia の言語をロシア語に設定
wikipedia.set_lang("ru")

# Wikipedia 記事のテキストを整理し、1000文字に制限する関数
def getwiki(s):
try:
ny = wikipedia.page(s)

# 最初の1000文字を取得
wikitext=ny.content[:1000]

# 句点で分割
wikimas=wikitext.split('.')

# 最後の句点以降を切り捨てる
wikimas = wikimas[:-1]

# テキスト用の空の変数を作成
wikitext2 = ''

# 「=」記号が含まれていない行(つまり、見出し以外の行)を繰り返し処理
for x in wikimas:
if not('==' in x):

# 行が3文字以上残っていれば、その行を変数に追加し、分割で失われた句点を復元
if(len((x.strip()))>3):
wikitext2=wikitext2+x+'.'
else:
break

# 正規表現を使ってマークアップを削除
wikitext2=re.sub('\([^()]*\)', '', wikitext2)
wikitext2=re.sub('\([^()]*\)', '', wikitext2)
wikitext2=re.sub('\{[^\{\}]*\}', '', wikitext2)

# テキスト文字列を返す
return wikitext2

# wikipedia モジュールがリクエスト時に発生させた例外を処理
except Exception as e:
return 'この項目に関する情報は百科事典にありません'

# /start コマンドを処理する関数
@bot.message_handler(commands=["start"])
def start(m, res=False):
bot.send_message(m.chat.id, '任意の単語を送信してください。Wikipedia でその意味を検索します')

# ユーザーからのメッセージを取得
@bot.message_handler(content_types=["text"])
def handle_text(message):
bot.send_message(message.chat.id, getwiki(message.text))

# ボットを起動
bot.polling(none_stop=True, interval=0)

完了です。スクリプトにトークンを入力し、サービスを再起動するのを忘れないでください:

service my-tel-bot restart



No Comments Yet