Untitled

mail@pastecode.io avatar
unknown
plain_text
a year ago
2.3 kB
2
Indexable
Never
import logging
from telegram import Update
from telegram.ext import Updater, CommandHandler, MessageHandler, filters, CallbackContext
import queue
import nltk
from nltk.corpus import wordnet

logging.basicConfig(level=logging.INFO)

API_TOKEN = '6292387381:AAEV1AKe4qaYo199MXQPg1dsX3X_X3LEUqk'

def start(update: Update, context: CallbackContext):
    update.message.reply_text('Привет! Отправь мне английское слово, и я сделаю его морфологический разбор.')

def process_word(update: Update, context: CallbackContext):
    input_word = update.message.text.lower()
    synsets = wordnet.synsets(input_word)

    if not synsets:
        update.message.reply_text('К сожалению, я не смог найти это слово в базе данных WordNet. Пожалуйста, проверьте правильность написания.')
        return

    base = synsets[0].lemmas()[0].name()
    pos = synsets[0].pos()

    if pos == 'n':
        pos_rus = 'существительное'
    elif pos == 'v':
        pos_rus = 'глагол'
    elif pos == 'a':
        pos_rus = 'прилагательное'
    elif pos == 's':
        pos_rus = 'сателлитное прилагательное'
    elif pos == 'r':
        pos_rus = 'наречие'
    else:
        pos_rus = 'неизвестная часть речи'

    response = f"{base} ({pos_rus})\n\n"

    inflections = [lemma.name() for lemma in synsets[0].lemmas()]
    response += "Формы слова:\n"
    for inflection in inflections:
        response += f"- {inflection}\n"

    # Здесь вы можете добавить свою логику для анализа морфологии слова
    # и предоставления подробного описания на русском языке.

    update.message.reply_text(response)

def main():
    updater = Updater(API_TOKEN, use_context=True)
    dp = updater.dispatcher

    dp.add_handler(CommandHandler("start", start))
    dp.add_handler(MessageHandler(filters.text, process_word))

    updater.start_polling()
    updater.idle()


if __name__ == '__main__':
    main()