Найти в Дзене
Записки сисадмина

Python. Telegram bot. Бот для изучения английского языка.

Самое приятное чувство в разработке - это осознание того, что твой продукт начинает приносить пользу и удобен пользователю. С тем же подходом я и пишу эти посты. Вдруг, найдется человек, которому пригодятся мои наработки, и он хоть немного сможет облегчить себе жизнь. Дело было вечером, делать было нечего. Вписался я от скуки пройти за компанию обучение по программированию, но не учел, что шаловливые ручки быстрее рук проверяющих. Короче, задача: telegram бот на python с базой данных на postgresql. Бот должен обучать людей английскому языку. Необходимо, чтобы у пользователей была возможность наполнять словарь бота, вводя в него новое русское слово и 4 варианта перевода на английском, один из которых будет правильным. В принципе, задача простая, написана была довольно быстро и сдана на проверку. И тут случилось ужасное: я сам попробовал поработать со своим ботом и добавлять слова в базу. Ради эксперимента, попробуйте написать русское слово, правильный и 3 неправильных перевода. Меня хва

Самое приятное чувство в разработке - это осознание того, что твой продукт начинает приносить пользу и удобен пользователю. С тем же подходом я и пишу эти посты. Вдруг, найдется человек, которому пригодятся мои наработки, и он хоть немного сможет облегчить себе жизнь.

Дело было вечером, делать было нечего. Вписался я от скуки пройти за компанию обучение по программированию, но не учел, что шаловливые ручки быстрее рук проверяющих.

Короче, задача: telegram бот на python с базой данных на postgresql. Бот должен обучать людей английскому языку. Необходимо, чтобы у пользователей была возможность наполнять словарь бота, вводя в него новое русское слово и 4 варианта перевода на английском, один из которых будет правильным.

В принципе, задача простая, написана была довольно быстро и сдана на проверку.

И тут случилось ужасное: я сам попробовал поработать со своим ботом и добавлять слова в базу.

Ради эксперимента, попробуйте написать русское слово, правильный и 3 неправильных перевода. Меня хватило на 10 повторений. А если что-то работает через причинное место, это нужно оптимизировать. И, желательно, до того, как это попадет к конечному пользователю.

Весь код бота и инструкцию вы можете посмотреть здесь. Я хочу разобрать лишь тот блок, который отвечает за наполнение словаря.

Итак, начнем.

  • Пользователь будет отдавать нам слово на русском языке, поэтому первым делом нам нужно будет его перевести на английский.

Честно, я изначально хотел попробовать использовать переводчик яндекса, но... Платный, не очень понятный API, лень разбираться в нем.

  • Поэтому будем использовать библиотеку googletrans:
from googletrans import Translator
  • Пишем простенькую функцию, которая будет принимать в себя русское слово, переводить его и отдавать английское
-2
  • Далее, нам нужно самим автоматически придумать еще 3 неправильных перевода.

Но мы ведь хотим, чтобы обучающийся учил слова, а не подбирал ответ логически. Значит, нам нужно исключить те случаи, когда предложенные слова будут относиться к разным частям речи.

Для получения части речи будем использовать библиотеку textrazor.

import textrazor
  • Напишем функцию, которая будет принимать в себя английское слово и давать нам ответ, какой части речи оно принадлежит:
-3
-4
на вывод мы получим:
Dog
nouns

  • Ну и в конце концов, мы генерируем еще 3 неправильных варианта.

Я решил использовать библиотеку wonderwords.

from wonderwords import RandomWord

  • Пишем функцию, которая будет принимать английское слово, вызывать нашу написанную функцию get_part_of_speech, которая выдаст часть речи, и генерировать 3 новых английских слова:
-5
-6
Dog
['Derrick', 'Gemsbok', 'Pimple']

  • Полный функционал добавления слова в словарь можете посмотреть в файле бота:
-7

Пишите в комментариях, если хотите полного разбора бота. Есть несколько моментов, в которых я не согласен с преподавателями на онлайн курсе :)