Легко.
Давайте напишемо бота який перекладатиме нам всяке з німецької:
Для цього нам треба поговорити з botFather-ом:
А зараз трохи не по темі цієї статті. Ось код який перетворює вікідані на словник, шукаючи всі сутності які мають мітки однією мовою, а потім показучи їх мітки іншою мовою, використовуючи хитрий запит SPARQL:
import json
import requests
def translate(from_lang, to_lang, word):
'''
Переклдає мітки елементів вікіданих з мови на мову. Повертає список варіантів перекладу
'''
res = sparql('''
SELECT ?ukLabel WHERE {
?item ?label "%s"@%s.
?item rdfs:label ?ukLabel filter(lang(?ukLabel) = "%s")
} LIMIT 10
''' % (word, from_lang, to_lang))
return list(map(
lambda e: e['ukLabel']['value'],
res['results']['bindings']
))
def sparql(query):
''' Отримує JSON дані запиту SPARQL до вікіданих '''
res = requests.get(
'https://query.wikidata.org/sparql',
params={
'query': query,
'format': 'json'
}
)
return json.loads(res.text)
А тепер повертаємось до теми телеграмного бота. Аби його написати треба поставити бібліотеку:
pip install pyTelegramBotAPI
Ось її Github: https://github.com/eternnoir/pyTelegramBotAPI
А далі – елементарно як писати консольну програму:
import telebot
TOKEN = '' # тут вставити те що BotFather сказав
bot = telebot.TeleBot(TOKEN)
@bot.message_handler(content_types=["text"]) # Якщо прийдуть нові повідомлення
def respond_to_message(message):
translations = translate('de', 'uk', message.text) # Отримати переклади тексту повідомленя
resp = '\n'.join(translations) if translations else 'На жаль, перекладу слова %s не знайдено' % message.text
bot.send_message( # відправити назад
message.chat.id, # в той самий чат з якого прийшло (можна напевне й в інший)
resp
)
if __name__ == '__main__':
bot.polling(none_stop=True) # Запустити бота аби той сидів на лінії і слухав повідомлення.
Поки що все, бо й висипатись іноді треба. Пізніше нагадайте мені не забути написати більше про SPARQL, як поставити собі локальну mediawiki і розширення до неї, як логінити сторонні застосунки через OAuth, і як переписати інтерфейс вікіпедії на Vue.js.
Filed under: Кодерство, Павутина Tagged: вікіпедія, Python

