---
# System prepended metadata

title: Бот для изучения английского

---

# Бот для изучения английского

1. Скачать файл [dictionares.py](https://raw.githubusercontent.com/abekek/SAT-Vocabulary-Telegram-Bot/master/dictionaries.py) и добавить его в папку проекта

2. Создать файл english.py и подготовить основу для бота
```python=
import telebot
import logging


TOKEN = 'TOKEN'
bot = # TODO

logger = telebot.logger
telebot.logger.setLevel(logging.DEBUG)  # Outputs debug messages to console.
```

3. Создайте markup главного меню
```python=
from telebot import types


main_menu_markup = # TODO
main_menu_markup.add(types.KeyboardButton('Learn new words'))
# TODO по аналогии добавьте кнопку'Check yourself'
```

4. Изучите файл dictionaries.py. Сколько в нем переменных? Что каждая из них делает?

5. Импортируйте переменные из dictionaries.py в english.py
```python=
from dictionaries import *
```

6. Создайте обработчик команды /start
```python=
@bot.message_handler(???) # TODO
def send_welcome(message):
    # отправьте сообщение 'What do you want to do?' с нужным markup'ом
```

7. Создайте обработчик для фичи изучения новых слов
```python=
# TODO импортируйте модуль random

@bot.message_handler(regexp='Learn new words')
def learn_words(message):
    idx = # TODO выберите индекс слова, которое мы будем присылать пользователю
    answer = # TODO сформируйте текст для пользователя, включите в него само слово, его значение и часть речи
    bot.send_message() # TODO отправьте сообщение
    # TODO перейдите в главное меню (register_next_step_handler)
```

8. Создайте обработчик для фичи самопроверки

```python=
@bot.message_handler(regexp='Check yourself')
def check_yourself(message):
    idx_true = # TODO случайное число от 0 до len(words)
    idx_option1 = # TODO случайное число от 0 до len(words)
    idx_option2 = # TODO случайное число от 0 до len(words)
    idx_option3 = # TODO случайное число от 0 до len(words)

    options = [
        words[idx_true],
        words[idx_option1],
        words[idx_option2],
        words[idx_option3]
    ]
    options.sort()

    options_markup = types.ReplyKeyboardMarkup()
    options_markup.add(types.KeyboardButton(options[0]))
    options_markup.add(types.KeyboardButton()) # TODO другие опции
    options_markup.add(types.KeyboardButton()) # TODO другие опции
    options_markup.add(types.KeyboardButton()) # TODO другие опции

    question = description[idx_true]
    bot.send_message(message.chat.id, question, reply_markup=options_markup)
```
    
8. Создайте функцию для проверки ответа
```python=
def compare_answer(message, idx_true=None):
    if message.text == words[idx_true]:
        bot.reply_to(message, '?') # TODO текст
    else:
        bot.reply_to(message, '?') # TODO текст
    bot.register_next_step_handler(???) # TODO
```

9. В функции `check_yourself` зарегистрируйте обработчик для слудеюущего шага
```python=

bot.register_next_step_handler(
        message,
        lambda m: compare_answer(m, idx_true)
    )
```

9. Запустите бота