Си шарп видео уроки

Формула программиста

основатель — Волосатов Евгений Витольдович

SOFT: API Telegram

Что ты получишь, пройдя этот курс:
⦁    Умение работать с API функциями и с Json форматом
⦁    Инструменты для работы с API функциями Telegram
⦁    Собственный Бот для автоматизации рутинных процессов
⦁    Возможность получать прибыль (как? мы расскажем!)

Запишись на курс чтобы открыть бесплатно первые уроки.

SOFT: API Telegram

Хочу купить!

Купить в рассрочку за мегахеши

Цена: 5000 p.


Список уроков | фото | видео

# Название видеоурока Видео / Тесты Решило Рейтинг Доступ
1 Здесь Ботов раздают? 00:16:37
26 чел. ★ 4.9 Done
  Вводный урок, на котором мы познакомимся с системой и создадим собственного Бота, что бы в последствии использовать эти данные для автоматизации Бота.

*Задание: написать несколько примеров использования Бота для Телеграмма
Отчёт отправил: 9752. chokayes Выполнено за 43 мин. [Показать отчёт]
Научился: бот есть, идем дальше 
Сложности: все просто 
2 Осознание... 00:10:27
20 чел. ★ 5 Done
  Первое создание проекта, заполнение формы, установка констант.

*Задание: установить аватар для Бота

Отчёт отправил: 9752. chokayes Выполнено за 1 день 9 час. 56 мин. [Показать отчёт]
Научился: первоначальной настройке бота и подготовка к подключению 
Сложности: все просто 
3 Начинаем кодить 00:16:35
18 чел. ★ 5 Done
  На уроке мы уже начинаем программировать, уже через нашу новую программу получаем данные, обновления и пр.

*Задание: получить номер последнего обновления – offset
Отчёт отправил: 9752. chokayes Выполнено за 2 час. 48 мин. [Показать отчёт]
Научился: получать номер последнего обновления, импортировал класс из предыдущего курса и использовал его для того, чтобы получить нужную информацию 
Сложности: все просто 
4 Что такое Json?! 00:22:25
17 чел. ★ 5 Done
  Урок расскажет всё о Json, и использовании этой технологии в C#

*Задание: написать описания для класса сообщения.
Отчёт отправил: 9752. chokayes Выполнено за 1 час. 20 мин. [Показать отчёт]
Научился: формирование классов из json кода - хорошая штука. описания (summary) полезны при разработке программ 
Сложности: все просто 
5 Вам телеграмма! 00:18:18
17 чел. ★ 5 Done
  Учим нашего Бота писать сообщения, а так же реагировать на наши сообщения.

*Вопрос: кто может в данный момент написать и получить ответ от Бота?
Отчёт отправил: 9752. chokayes Выполнено за 38 мин. [Показать отчёт]
Научился: оживили бота. да хоть кто может общаться с ботом, даже я. )  
Сложности: все просто 
6 Не хочу писать! 00:33:13
16 чел. ★ 5 Done
  Правильно! В Век Новых Технологий пользователь приучен тыкать по кнопках, а не писать самостоятельно, вот и мы на уроке начнем создавать кнопки.

*Задание: создать кнопочное меню, состоящее из месяцев
Отчёт отправил: 9752. chokayes Выполнено за 2 час. 51 мин. [Показать отчёт]
Научился: классный урок! Сделали сериализацию Json на основе которого создается клавиатура. Посмотрел полученную строку, прикольно, для чего-то мелкого и простого можно и вручную делать, без сериалов. )  
Сложности: все просто 
7 Волшебство начинается! 00:32:40
16 чел. ★ 4.9 Done
  Фантастика, в Телеграмме есть кнопки, которые умеют отправлять запрос, а не сообщение.
Как их создавать и как ими пользоваться, всё это и многое другое на уроке!

*Вопрос: как получить данные из ответа Бота, если ему отправить inline запрос?
Отчёт отправил: 9752. chokayes Выполнено за 6 час. 13 мин. [Показать отчёт]
Научился: Все просто, эти данные вытаскиваем из update ( в нем callback_query). Структура json, который мы получаем может быть разной, когда мы нажимаем на кнопочку Inline keyboard, тогда нам в ответ и высылают update с callback_query и поэтому же у нас выскочила ошибка так как result не пустой, но в нем нет message. На картинке c json видно в поле data стоит "ya.ru". 
Сложности: все просто 
8 По взмаху волшебной палочки! 00:23:38
15 чел. ★ 5 Done
  Управлять запросами это непросто, ну а как этим заниматься, рассмотрим на уроке.
Подсказочки тоже может быть пригодятся в последствии!

*Задание: сформировать inline меню названия месяцев, чтобы оно возвращало номер месяца.
Отчёт отправил: 9752. chokayes Выполнено за 1 час. 33 мин. [Показать отчёт]
Научился: урок со спец-эффектами ) 
Сложности: все просто 
9 Изменить неизменяемое 00:23:36
15 чел. ★ 5 Done
  Научимся менять уже отправленное сообщение, чтобы у пользователя возникло ощущение интерактива.

*Задание: на следующем уроке освоить технологию SQLite
Отчёт отправил: 9752. chokayes Выполнено за 16 час. 6 мин. [Показать отчёт]
Научился: научились использовать  /editMessageText, чтобы изменять сообщения. Арсенал инструментов растет. ) базовые основы работы с SQLite уже есть.              
Сложности: все просто 
10 SQLite: База MySQL в кармане 00:28:11
14 чел. ★ 5 Done
  Подключаемся к базе SQLIte через Visual Studio используя язык программирования C#
Если установить SQLite через NuGet, то установится необходимая версия библиотеки.

*Самостоятельное задание: сделать так, чтобы при нажатии кнопки Enter в DataGridView данные сохранялись в базу данных
Отчёт отправил: 9752. chokayes Выполнено за 8 час. 54 мин. [Показать отчёт]
Научился: Подключать базу SQLite в C#. Выводить в DataGridView таблицу. Сохранять данные при нажатии кнопки Enter. 
Сложности: Хотел сначала наскоком сделать через AcceptButton. Не получилось. Пришлось через обработчик события у DataGridView , там только один нормально подходит. ) Все работает, только теперь при вводе новой строки пользоваться кнопкой Enter для переключения меду ячейками не рекомендуется.  
11 БД - Большое Дело! 00:20:29
14 чел. ★ 5 Done
  Планы - основа всех Баз Данных, будем планировать и создавать Базы Данных!

*Задание: заполнить остальные пункты Магазина.
Отчёт отправил: 9752. chokayes Выполнено за 9 час. 24 мин. [Показать отчёт]
Научился: Создали базу данных для магазина, я думаю, все таки стоило табличку с категориями отдельно сделать, а то у нас избыточность получается, прям как в excel таблице. нужно еще добавить id товара и фото товара  
Сложности: все просто 
12 Прикрутить БД 00:25:11
14 чел. ★ 5 Done
  Внедряем в проект SQLite, оптимизируем программу.

*Задание: добавить на форму DataGridView и отобразить данные из таблицы
Отчёт отправил: 9752. chokayes Выполнено за 4 час. 45 мин. [Показать отчёт]
Научился: рефакторинг - это круто!  
Сложности: все просто 
13 Без изменения кода... 00:24:38
14 чел. ★ 5 Done
  На уроке мы научимся только меняя в БД данные изменять работу нашего Бота

*Задание: добавить переход на новую строку при автоформировании меню
Отчёт отправил: 9752. chokayes Выполнено за 7 час. 53 мин. [Показать отчёт]
Научился: поэксперементировал с выводом кнопок, пришел к выводу, что больше 3-х выводить резона нет, у меня максимально получилось в строку вывести 8 кнопок, с текстом в одну букву на кнопке, остальные не вмещаются и не переносятся! Был выбор сначала сформировать все массивы строк по 3 кнопки и  только потом фомировать keyboard, но в этот раз я решил формировать только один массив из 3-х кнопок, сразу добавлять в keyboard, и заново переопределять массив, для этого задействовал счетчик. Хватило нашего цикла foreach по коллекции, только я вместо DataRowCollection подставил массив, чтобы наглядней было.  
Сложности: все просто 
14 Главные кнопки 00:27:41
14 чел. ★ 4.9 Done
  Создаем отдельный метод, который отвечает за добавление в наше Главное меню Главные кнопки :)

*Вопрос: почему возникает исключение при нажатии клавиш?
Отчёт отправил: 9752. chokayes Выполнено за 12 час. 42 мин. [Показать отчёт]
Научился: В начале урока решили ДЗ, понравилось универасальное решение, которое позволяет добавлять кнопки в любое место. Обратил внимание, что в уроках избегается в конструкторах слово this.  Вторая часть урока сложновата, много изменений в код, в разных местах, пришлось поднапрячься. ) Исключение возникает, потому что метод editMessageText требует, чтобы были высланы хоть какие-то изменения, а мы отправляем одно и то же. Ну это мы уже обсуждали. ) 
Сложности: сложно не потерять нить рассуждений. уже чувствую нехватку комментариев  в коде. 
15 Без тормозов 00:14:59
14 чел. ★ 5 Done
  Всегда лишнее тянет назад, и рука не поднимается сделать главное!
Очистим свой мозг и программу от лишнего мусора для новых горизонтов!

*Вопрос: для чего можно использовать систему контроля версий?
Отчёт отправил: 9752. chokayes Выполнено за 1 час. 34 мин. [Показать отчёт]
Научился: Если по-простому. Система контроля версий нужна, чтобы можно было вернуться к определенному состоянию проекта, также используется для командной разработки. Без нее пришлось бы делать бэкапы приложений по датам или еще как, в которых быстро запутаешься. 
Сложности: все просто. 
16 Продуктовый магазин 00:34:27
14 чел. ★ 5 Done
  Начинаем создавать показ Магазина пользователю.

*Вопрос: как можно решить проблему с открытием одного и того же элемента в Магазине
Отчёт отправил: 9752. chokayes Выполнено за 2 час. 17 мин. [Показать отчёт]
Научился: Написали отображение продуктов нашего магазинчика. Как вариант можно запоминать на нашей стороне, что мы отсылали ранее и если изменений нет, то и не отсылать. 
Сложности: все просто 
17 Покупательская Корзина 00:28:45
14 чел. ★ 5 Done
  В Магазине должна быть Корзина, куда покупатель будет складывать свой(наш) товар, давайте дадим эту возможность пользователя и создадим у Бота Корзину.

*Задание: добавить метод добавления продукта
Отчёт отправил: 9752. chokayes Выполнено за 7 час. 59 мин. [Показать отчёт]
Научился: Самое сложное ДЗ. Кстати корзина правильно: Cart или Shopping Cart. Создал метод CartAdd(), который вызывается при нажатии кнопки "Добавить в корзину", в него передаю одним из параметров item, откуда можно взять naim и userid (ncat нету). далее, чтобы записать в БД пришлось менять два класса в SQLiteClass добавил процедуру public void Insert(string ins), которая вставляет данные в таблицу, а в классе Корзина (TeleCart) сделал еще один конструктор public TeleCart(string ncat, string naim, string username) в котором и вызываю insert. хотя сейчас думаю, что надо было просто метод сделать. В итоге все добавляется, в базу пишется, на сайте сообщ выводится, что добавлено в корзину. Нужно было вытащить ncat, но я дальше не стал делать, просто naim записываю в БД.   
Сложности: все просто 
18 Корзиномания 00:30:06
14 чел. ★ 5 Done
  Будем создавать методы, позволяющие заполнять и удалять из Корзины продукты.

*Задание: вывести содержимое Корзины в Сообщение
Отчёт отправил: 9752. chokayes Выполнено за 9 час. 59 мин. [Показать отчёт]
Научился: выбираем для пользовтателя из  корзины,  поля ncat, naim и форичем формируем answer.  
Сложности: Возникла проблема с полем  naim, у меня был товар с наименованием из двух слов java beans, а по логике нашей программы мы используем Split() , поэтому в запрос передавалось только java и результат возвращал 0 строк, пришлось менять в БД, в таблице корзина кучу строк, если была бы таблица с категориями,  сделали бы 1 раз и все. И еще добавлю, не нравится мне вот так вот полагаться на строки и вытаскивать из них нужную информацию сплитом, получая массив, по индексу которого не понятно что внутри, думаю этот момент стоит продумать. Еще  в уроке, нам в одном месте понадобилось username и пришлось  добавлять этот параметр в кучу методов по цепочке, раньше в уроках мы значением по умолчанию решали. А в два вызова вместо username вставили chat.id, думаю - это совсем неправильно.  
19 Корзина. Что из этого мне нужно? 00:36:28
14 чел. ★ 5 Done
  Создадим возможность пользователю посмотреть содержимое Корзины, а так же дадим возможность пользователю удалять продукты из Корзины.

*Задание: написать процедуру очистки Корзины для определенного пользователя
Отчёт отправил: 9752. chokayes Выполнено за 4 час. 0 мин. [Показать отчёт]
Научился: Красиво получилось! ) многое узнал для себя из последних уроков, материал очень насыщенный и полезный, особенно работа с БД. Код навороченный.  ) 
Сложности: все просто 
20 Корзина. Результат 00:41:20
14 чел. ★ 5 Done
  Результат покупки надо куда-то возвращать, чтобы можно было организовать доставку или помочь пользователю, если возник вопрос. Организацией результата Корзины мы и займемся на уроке.

*Задание: если Корзина пуста – не отображать кнопку.
*Задание: организовать отправку Сообщения Администратору
Отчёт отправил: 9752. chokayes Выполнено за 7 час. 0 мин. [Показать отчёт]
Научился: Не отображаем кнопку, если корзина пустая, делается просто. Видимо  я не понял задание, у нас же и так есть метод private void SendMessageToAdmin(string message) 
Сложности: понять ТЗ ) 
21 Класс как кнопка 00:27:45
13 чел. ★ 5 Done
  На уроке мы рассмотрим простой пример, когда можно сделать так, чтобы отдельный класс отвечал за одну отдельную кнопку.

Отчёт отправил: 9752. chokayes Выполнено за 10 час. 11 мин. [Показать отчёт]
Научился: Внедрили класс-кнопку. Урок понравился. Можно добавить кнопку, "какие блюда можно приготовить из того, что Вы купили", а там уже предложить другие недостающие ингридиенты. ) 
Сложности: все просто 
22 Красота должна быть идеальной 00:26:49
12 чел. ★ 5 Done
  Наведем порядок в программе в плане красоты для пользователя, чтоб каждый элемент был красиво оформлен и приятен глазу.

Отчёт отправил: 9752. chokayes Выполнено за 1 день 8 час. 55 мин. [Показать отчёт]
Научился: Научился вставлять смайлы, картинки; и форматировать текст, широкий выбор тегов впечатляет. ) вмеcто невидимого пробела, ссылку повесил на "." Все супер. 
23 ФИНАЛЬНЫЙ УРОК без видео
11 чел. ★ 5 Done
  (В этом уроке нет видео)
Приветствую!
Ты дошел до конца этого курса, до этой черты доходят немногие!
Ты уже победитель!!!

Отчёт отправил: 9752. chokayes Выполнено за 13 час. 51 мин. [Показать отчёт]
Научился: Отличный курс! Узнал много нового для себя. Если бы сам вникал в это все самостоятельно, не представляю сколько времени бы ушло.  
Сложности: Не понятно зачем писать бота (который должен висеть постоянно) на c#.  
Видеообзор: 3M_mN_wvlQc
24 LINQ 00:40:17
9 чел. ★ 5 Done
  На уроке мы познакомимся с технологией LINQ, начнем писать запросы, варианты.

Отчёт отправил: 9752. chokayes Выполнено за 3 час. 56 мин. [Показать отчёт]
Научился: Наконец-то узнал что такое LINQ,  ) хороший мотиватор для прохождения данного курса Мощная штука! Урок супер. 
  Итого:   24 видеоурока 10 час. 04 мин.
9 чел. ★ 4.99  
  Финалисты:   Электрон,   Олег Михайлович,   Алексей В.,   Сергей Соколов,   Yefim,   chokayes,   Сергей,   Tekashnik,   Александр .

Начинаем практику по языку C#





Если вы пришли без приглашения -
введите тысяча двадцать четыре (цифрами).
Чтобы стать хорошим программистом — нужно писать программы. На нашем сайте очень много практических упражнений.

После заполнения формы ты будешь подписан на рассылку «C# Вебинары и Видеоуроки», у тебя появится доступ к видеоурокам и консольным задачам.

Несколько раз в неделю тебе будут приходить письма — приглашения на вебинары, информация об акциях и скидках, полезная информация по C#.

Ты в любой момент сможешь отписаться от рассылки.


Научился: Я прошёл оба курса по созданию телеграм-ботов, которые представлены в настоящий момент, и очень рекомендую их каждому из вас! Обучение прошло успешно, сейчас я даже взялся разработать бота для своего знакомого и эта работа уже находится в завершающей стадии.
Трудности: Курс невероятно прост для освоения, но требует терпения и трудолюбия, без этого никак не обойтись. Большое спасибо Кириллу за его труд!



Научился: Ура! Свершилось. Курс был очень интересным, но для меня оказался сложноватым. Особенно расстраивали исключения, которые появлялись время от времени на разных этапах разработки. Впрочем, я абсолютно не жалею, что взял этот курс - очень хорошая практика программирования на C# и особенно практика отладки - научился многим хитростям и приемам, о которых раньше не знал. Спасибо, огромное. Планирую, зайти на второй круг, так сказать) Начать писать еще один бот самостоятельно, выбрав, другую тему для магазина, под новый проект создать репозиторий на GitHub и попытаться глубже вникнуть в данную тематику.