Здесь ты найдешь подсказки и "шпаргалки" к материалу, который изучаешь на занятиях. Они будут полезны для успешного выполнения домашних заданий.
Помни: ты всегда можешь пересмотреть видео, почитать конспекты или обратиться со своими вопросами к сообществу и куратору в специальном чате в Телеграме. Удачи!
Конспект к занятию №1
На этом занятии мы познакомились со структурой нашего проекта в IntelliJ IDEA, узнали, как зарегистрировать бота в Telegram, и как написать в нем первое сообщение для пользователя.
Основные понятия языка Java, которые тебе будет полезно знать
ООП — объектно-ориентированное программирование. Java – объектно-ориентированный язык. Это означает: все, что создается в программе, должно быть создано в виде объекта.
Программа — это набор (список) команд. Сначала выполняется первая команда, затем вторая, третья и так далее. Когда все команды выполнены, программа завершается.
Программы на языке Java выполняет
JVM (
Java Virtual Machine — виртуальная машина Java). JVM — это специальная программа, которая умеет выполнять программы, написанные на языке Java.
Основные принципы написания команд
Принцип первый: в языке Java каждую команду принято писать
с новой строки. В конце команды ставится точка с запятой:
System.out.println("Привет, будущий программист");
Принцип второй: программа не может просто состоять из команд. Команды языка Java должны находиться внутри методов, а методы — внутри классов.
Общую иерархию можно описать так: Java-программы состоят из классов, классы содержат методы, а методы — команды.
Тезисы к первому занятию
- Запускаем IntelliJ IDEA и открываем загруженный проект. Папку
TelegramBot
(для windows нужно разархивировать).
- src в левой колонке — это source папка. src → main → java — путь к коду, с которым мы будем работать.
- Утилитные методы — это вспомогательные методы, обычно статические (static). То есть, такие, которые принадлежат не объекту, а классу.
- Наследование классов — форма отношений между классами. Класс-потомок использует методы класса-родителя, но не наоборот.
В нашем случае мы используем наследование от класса
TelegramLongPollingBot — в нем есть набор методов, которые нужны нам для соединения и работы с Telegram-ботом, который мы с тобой создадим.
Чтобы программа могла работать с нашим ботом, нам нужно указать:
- getBotUsername (имя бота)
- getBotToken (токен бота)
Получение имени и токена бота, регистрация бота
Открываем Telegram и через поиск находим
BotFather.
В открытом с ним диалоге пишем:
/newbot — команду для создания нового бота.
После создания нужно выбрать уникальное имя (username) — обязательно должно заканчиваться на
_bot.
Утилитные методы, которые мы будем использовать
Напомним,
утилитные методы — готовые методы, написанные другими программистами, которые помогают нам писать код нашей программы.
onUpdateEventReceived — метод, который будет обрабатывать все сообщения, вводимые пользователями нашего бота. Мы будем их получать и писать логику соответственно тому, что нам нужно.
sendTextMessageAsync — метод для создания сообщения.
Первым параметром он принимает значение
chatId — идентификатор чата, который начал пользователь.
Вторым принимает значение сообщения, которое выведется пользователю. В нашем случае — "Привет, будущий программист!".
sendApiMethodAsync — метод для отправки сообщения.
Домашнее задание №1
- Загрузить проект в IntelliJ IDEA.
- Создать и зарегистрировать нашего бота в Телеграм.
- Написать первое сообщение в боте для пользователя.
Подсказки к выполнению задания №1
Проверка корректности кода и обновление изменений в проекте
Чтобы увидеть изменения, которые ты вносишь непосредственно в работе Телеграм-бота, не забудь после написания своего кода применить все изменения (перезапустить проект) в IntelliJ IDEA.
Для этого нужно в нижней горизонтальной панели нажать на зеленую круглую стрелку:
Важные принципы форматирования кода
- Не забывай ставить точку с запятой ; в конце команды, которую ты создаешь
- У каждой открывающей скобки или кавычки: (, {, ", должна быть закрывающая скобка или кавычка: ), }, "
- Если твой код подсвечивается красным, значит в нем есть ошибка — присмотрись внимательнее
- Используй автоматические подсказки и автодополнение — это поможет тебе писать код правильно
|
Помни о том, что твои названия переменных, методов и классов должны быть читабельными: по названию должно быть понятно, что они делают или для чего предназначены.
Форматирование текста
- Чтобы выделить текст курсивом, нужно в начале и в конце необходимого фрагмента добавить нижние подчеркивания: _текст_
- Чтобы выделить текст жирным, нужно в начале и в конце необходимого фрагмента добавить звездочки: *текст*
Не обязательно к установке
Когда много скобок и других подобных знаков можно легко запутаться. И кто-то уже придумал плагин Rainbow Brackets. Он выделяет разным цветом скобки и другие знаки, облегчая читабельность кода.
1. Зайдите в раздел "Настройки", Windows/Linux
File - Settings
, MacOS
Intellij IDEA - Preferences
2. В появившемся окне в боковом меню выберите раздел
Plugins
и откройте вкладку
Marketplace
. И в строке поиска напечайте
Rainbow Brackets
3. После установки нажать
Restar IDE
Конспект к занятию №2
Методы и операторы, которые будем использовать
- if — условный оператор в Java
- getMessageText() — метод, с помощью которого будем проверять, есть ли у нас новое сообщение
- equals — метод, который сравнивает содержание сообщения с конкретным текстом. Чтобы условие было true, содержание должно быть полностью идентичным (то, что передано в метод equals — слово в слово — в запросе/сообщении)
- contains — метод, который проверяет, содержит ли сообщение определенное слово/фразу. В нашем случае — "привет"
Конструкция условного оператора if
Оператор
if является основным оператором выбора в Java, который позволяет выборочно изменять ход выполнения программы.
Он начинается с ключевого слова
if. Ключевое слово
if сопровождается булевым (логическим) выражением в скобках. Самая простая форма выглядит так:
if (условие) оператор; // если условие истинно, выполняется оператор
Оператор
if продолжается фрагментом, который берется в фигурные скобки
{} —
{блок операторов}.
Важно: в нашем случае мы используем два условных оператора: не забывай про оператор
&& — И, наше дополнительное условие с подсчетом очков славы.
Домашнее задание №2
- Продолжаем диалог. Вывести сообщение "Asta la vista, baby!" если пользователь ввел команду "/bye'";
- Отобразить сообщение: "Ваше любимое животное?" с двумя кнопками: "Кот" и "Собака";
- При нажатии пользователем кнопки "Кот", вывести на экран картинку step_4_pic;
- При нажатии пользователем кнопки "Собака", вывести на экран картинку step_6_pic;
Подсказка к выполнению задания №2
У каждой открывающей скобки или кавычки: (, {, ", должна быть закрывающая скобка или кавычка: ), }, ".
Будь внимателен и не перепутай эти пары знаков, когда будешь писать код для обработки сообщений в боте.
Конспект к занятию №3
На этом занятии мы научились отправлять сообщения с помощью кнопок. После этого ты сможешь самостоятельно дописать диалог с Котом в своей чатбот-игре.
Добавление кнопок к боту
Текст с подсказками, который нужно написать на кнопках в твоей чатбот-игре, уже подготовлен. Найти его ты можешь в папке с проектом — в файле
buttons.txt:
- getCallbackQueryButtonKey — метод, который мы используем для проверки, была ли нажата какая-либо из кнопок.
- Map.of() — карта со значениями кнопок, которые выводятся для пользователя вместе с определенным сообщением.
- k (key) — значение кнопки.
- v (value) — идентификатор кнопки (для удобства (читаемости) используем номер шага, на котором мы находимся в чатбот-игре).
Тестируем все изменения в программе
Все изменения вноси
шаг за шагом. Редактируешь одну часть кода — примени эти изменения (зеленая стрелочка в нижней горизонтальной панели), и убедись, что твоя программа работает: проверь, как все выглядит в Телеграм-боте после твоих действий в редакторе кода.
Домашнее задание №3
- Дописать диалог с Котом, используя текст для шагов (степов) из класса TelegramBotContent.
- Используй тексты для кнопок, которые содержатся в файле buttons.txt.
Подсказка к выполнению задания №3
Обрати внимание: начиная со второго шага мы проверяем не только то, была ли нажата кнопка, но и КОЛИЧЕСТВО СЛАВЫ, которая есть у Кота на данный момент.
Сначала она равна 0. С выполнением каждого шага Кот получает дополнительное количество славы (+20, 30...).
Количество славы — важное условие, которое помогает нам создать правильную последовательность действий в чатбот-игре — без повторения шагов.
Важно! На последнем шаге также обязательно нужно добавить
addGlories, иначе мы сможем нажимать на последнюю кнопку "Выйти во двор" бесконечно, и сообщение в чатбот-игре будет дублироваться.
Конспект к занятию №4
На завершающем этапе будем добавлять изображения к ответам для нашего пользователя и таким образом сделаем его более интересным. А еще — займемся рефакторингом кода!
Добавление изображений к сообщениям в боте
Все необходимые тебе изображения находятся в папке
resources/images
:
PhotoMessage — нужный нам метод для добавления изображений. Он принимает 2 значения:
- chatId (идентификатор пользователя)
- name: название изображения, которое мы хотим использовать
executeAsync – метод для отправки объекта (изображения) пользователю.
Домашнее задание №4
- Отобразить количество очков славы, если пользователь ввел команду /glory. Используйте метод getUserGlory()
- Поменяйте финальную картинку игры. Используйте метод sendPhotoMessageAsync.
Рефакторинг кода твоей программы
Рефакторинг (от англ. refactoring) — изменение внутренней структуры программы, которое не влияет на ее внешнее поведение. По сути это упрощение и улучшение кода, который уже существует, чтобы придать ему более компактный и читабельный вид, повысить производительность и избежать ошибок в коде в будущем.
Твое задание — написать универсальный метод
sendMessage(), который будет отправлять сообщение для пользователя. Поскольку наши сообщения имеют постоянные компоненты, будет удобно иметь именно такой шаблон.
Несколько важных определений с занятия:
- private — означает приватный метод, который используется только в нашем классе.
- void – значение, которое указывает на то, что метод ничего не возвращает.
- sendMessage() — собственно, название твоего метода, который отправляет сообщение для пользователя. В скобках () тебе нужно прописать все те параметры, которые нам нужны, чтобы реализовать правильную логику для пользователя.
Сохраняем результат в переменную
Вот небольшое объяснение того, как сохранить результат в переменную, как это делал ментор на занятии:
Ты можешь это сделать двумя способами:
- после набора команды, например, createMessage(chatId, text, buttons), нажать ctrl+alt+v (Windows)
- после набора команды, например, createMessage(chatId, text, buttons), набрать ".var" (без кавычек) и нажать Enter
Далее будет предложено ввести имя переменной, в которую нужно сохранить результат работы команды.
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ