Scroll to top

Мануал по работе с кодом.


Stariy - 21 июля, 2021 - 0 comments

Всем привет, в данном мануале я научу тебя редактировать Telegram ботов по нашим шаблонам.

Для чего это нужно? Что это тебе даст?

В 2019 году, обрели огромную популярность чат-боты в различных мессенджерах, в том числе и в Telegram. Все стремятся и хотят улучшить качество взаимодействия со своими клиентами, увеличить показатели продаж.  Для бизнеса это подобно: «Кто успел войти первым, тот в лидерах». Их мнение нам на руку.

По статистическим данным аналитиков с Bloomberg, к 2021 году 80% бизнес индустрии будут иметь своих чат ботов.

Что же происходит сейчас на рынке? Кто из масштабных игроков в RU/UA сегмента задействовали успешно использует ботов?

— №1 служба доставки Украины Новая Почта: @novaposhta_bot

— Государственный банк Украины, ПриватБанк: @PrivatBankBot

— Яндекс.Касса бот — @YandexCheckoutPaymentBot (заметьте хоть в России и запрещен Телеграмм, Яндекс работает в обычном режиме).

— Проект бизнеса Tutu.ru — @TutuRoBot

— Сеть отелей Петербурга Питер Пелэс — @piterpalacebot

— Строительная компания ООО «ЭТУ» — @etuspbbot

— Лаунж кафе Buta Bar — @Butabar_bot

— Фитнес центр Реформа — @ReformaFitness_bot

— Салон красоты Elitly Петергбург — @ElitlyBot

И многие другие, всех не перечислить.

Какому сегменту бизнеса, мы можем предложить разработать чат бота телеграмм?

— Кафе/Ресторан.

— Доставка еды и в целом все что касается доставки.

— Интернет магазины одежды, продуктов, обуви и прочего.

— Автомойки.

— Бьюти индустрия (парикмахерская, маникюр, наращивание ресниц и прочие).

— Онлайн магазины аккаунтов.

— Ивент агентства.

И все остальное, что только сможете себе представить.

Бот может заменять сайт визитку, мобильное приложение на платформе IOS/Android для любого бизнеса и быть более функциональным и простым.

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

Мануал

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

1.Установка Python (Библиотеки + Среда разработки)

Устанавливаем Python

python

Обязательно поставьте галочку здесь (Add Python 3.7 to PATH)

Установка Python

Устанавливаем библиотеки которые могут нам понадобиться (requests, pyTelegramBotAPI)
1) Чтобы установить библиотеки нам нужно открыть «Командную строку»
Пуск — В поиске вбиваете «Командная строка» иди «cmd»-  Открываете.

Терминал

2) В Командную строку вписываем «pip install requests»

терминал

Successfully installed request – тут должна быть написана версия

3) В Командную строку вписываем «pip install pyTelegramBotAPI»

Устанавливаем PyCharm Community(среда разработки)

Среда разработки

Ставите все галочки, как на скриншоте.

Установка

Все установлено! Если, что-то не получилось стучите Админу

2.Типы, методы для Telegram ботов.

(Я прекрасно понимаю, что возможно вы в первый раз сталкиваете с программированием и для вас это на данный момент все очень сложно, поэтому я буду все объяснять вам очень простыми словами и примерами. )

 

Типы. Я не буду использовать никакие заумные определения, никакие заумные слова, для того чтобы правильно вы все поняли.
Давайте рассмотрим несколько типов которые мы очень часто будем использовать.
startmenu = types.ReplyKeyboardMarkup(True, False)
startmenu.row (‘Название кнопки’) –
Этот код нам нужен для того, чтобы можно было добавлять кнопки вот такого плана.

Типы

Теперь давайте разберем все по очереди.
1) startmenu – это переменная, которая может быть названа как только вы пожелаете (только нельзя начинать переменную с цифры по типу: 1startme).
2) = – это значит что мы присваиваем что-либо переменной «startmenu».
3) types.ReplyKeyboardMarkup(True, False) – Это тип, который позволяет нам добавлять кнопки(просто запомните его написание). Элемент в скобках «True» – Отвечает у нас за размер кнопок (если его не добавлять или поставить вместо него «False», то кнопки будут огромные и не удобные). Элемент в скобках «False» – Отвечает у нас за сворачивание кнопки после её нажатия (если поставить «True», то кнопка будет сворачиваться при нажатие на неё)
4) startmenu.row(‘Название кнопки’) – где «startmenu» – это название переменной, а «row» – это добавление кнопки, «(‘Название кнопки’)» — в скобках указывается название самой кнопки в кавычках (неважно в ординарных или в двойных).
Здесь еще немного примеров для закрепления:
myfirstbot = types.ReplyKeyboardMarkup(True, False)
myfirstbot.row(‘BOTMAKER’, ‘BIGZLUKA’)
myfirstbot.row(‘TELEGRAM’, ‘BOT’)

forbotmaker = types.ReplyKeyboardMarkup(True, False)
forbotmaker.row(‘Кнопка один’, ‘Кнопка два’)

 

Следующий тип выглядит так:
inlinemenu = types.InlineKeyboardMarkup(row_width=1)
button_1 = types.InlineKeyboardButton(text=’Название инлайн кнопки’, callback_data=’Любое название’)
inlinemenu.add(button_1) –
этот код нам нужен для кнопок такого вида

Кнопки

Теперь разберем все по очереди.
1) inlinemenu — это переменная, которая может быть названа как только вы пожелаете (только нельзя начинать переменную с цифры по типу: 1startme).
2) = – это значит что мы присваиваем что-либо переменной «inlinemenu».
3) types.InlineKeyboardMarkup(row_width=1) — Это тип, который позволяет нам добавлять инлайн кнопки(просто запомните его написание). Элемент в скобках row_width=1 — его вообще можно не указывать, он нужен для того, чтобы было ограниченное число инлайн кнопок в ряду, в нашем случае он равен 1, то есть, если мы сделаем 100 кнопок, то они все будут в один ряд по одной кнопке.
4) button_1 — это переменная, которая может быть названа как только вы пожелаете (только нельзя начинать переменную с цифры по типу: 1startme).
5) types.InlineKeyboardButton(text=’Название инлайн кнопки’, callback_data=’Любое название’) — Это тип, который добавляет инлайн кнопки(просто запомните его написание). Элемент в скобках «text=’Название инлайн кнопки’» — в нём мы можем писать текст для нашей кнопки. Второй элемент callback_data=’Любое название’ – нужен для того, чтобы в будем мы могли обращаться к нашей кнопки, то есть мы к ней будет обращаться не по первому тексту «Название инлайн кнопки», а именно по «Любое название».
6) inlinemenu.add(button_1) – Добавляем кнопку в эту переменную(просто нужно это запомнить). В скобках нужно указать название переменных в которых у нас находятся кнопки.
Еще пример для закрепления:
primerknopok = types.InlineKeyboardMarkup()
but_1 = types.InlineKeyboardButton(text=’Кнопка1’, callback_data=’Knopka1′)
but_2 = types.InlineKeyboardButton(text=’Кнопка1’, callback_data=’Knopka1′)
primerknopok.add(but_1, but_2)

Самые важные по моему мнению типы мы рассмотрели, теперь давайте рассмотрим методы.
bot.send_message(message.chat.id, ‘Текст’) – это метод, думаю вы догадываетесь нужен для отправки сообщения пользователю от лица бота.

Добавляем текст

bot.send_photo (message.chat.id, ‘FILE ID’) – этот метод мы используем для отправки пользователю фотографии/картинки.

добавляем картинки

(На скрине бот отправляет фото+текст+кнопки)
bot.send_location(message.chat.id, 47.99388509, 37.80420318) – отправить геолокацию пользователю.

Геолокация

Это методы, которые мы будем использовать постоянно, все остальные методы нам по сути не нужны.

 

3.Декораторы(обработчики сообщения)

Декораторы нужны для того, чтобы понимать какое сообщение пишет пользователь, в коде они выглядят вот так:

Декораторы

@bot.message_handler(commands=[‘start’]) – где @bot.message_hadler – это то, что мы будем обрабатывать приходящие сообщения.
(commands=[‘start’]) – в круглых скобках указывается тип который мы хотим получить. В нашем случае мы обрабатываем тип «commands(команды)», а в квадратных скобках какая команда, в нашем случае команда /start

Так же помимо типа «commands», есть тип «content_types=[‘text’]» — он обрабатывает любой текст, контакт(номер телефона), аудиофайл, видеофайл, стикер, фото и т.д.. А так же (func=lambda message: message.text == ‘Именно этот текст’) – он обрабатывает только конкретный текст(есть множество вариантов, но мы его не будем использовать часто, только в одном конретном случае)
P.s. == — в примере означает, что message.text РАВЕН ‘именно этому тексту’. Всеми остальными типами мы пользоваться не будем.
Так же хочу заметить что мы будем использовать еще один декоратор для обработки наших инлайн кнопок(его тоже просто нужно запомнить)
@bot.callback_query_handler(func=lambda c:True) —  по нему ничего впринципи знать ничего не нужно, все увидете в самом коде, и будет все понятно.
Примеры:
@bot.message_handler(commands=[‘start’,  ‘help’, ‘about’]
@bot.message_handler(content_types=[‘text’,  ‘contant’, ‘sticker’, ‘audio’, ‘video’, ‘photo’]

 

4.Создание бота

 

Для того, чтобы создать бота нам понадобится:

Клиент Telegram на ПК.

Аккаунт в Telegram.

И так, когда мы пункты выше выполнили, вбиваем в поиске «@BotFather»

Бот в телеграм

Нажимаем на найденного бота, и пишем в чате команду «/start»

 

команды бота

Нам бот отправил список команд которые мы можем использовать

Сейчас мы будем использовать только команду «/newbot»,
Вбиваем в чат или выбираем из предложенных команду «/newbot»

newbot

Дальше бот нам говорит, что нам нужно выбрать имя для бота

 

Имя бота

 

Отлично,  теперь у нашего бота есть имя, теперь нам нужно выбрать имя по которому его могут найти, как мы нашли @BotFather, так же обязательно знать, что оно должно быть только на латинице, а так же должно заканчиваться на bot или _bot

 

Бот

Сейчас нам сказали, что такое имя для бота у нас занято, давайте попробуем
BOTSMAKERS_BOT

 

Токен

 

Отлично! Мы успешно получили токен(подчеркнут красным цветом) и создали нашего первого бота!

 

5. Разбор кода

 

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

Код

 

1)# coding=utf-8 – эта строчка нам нужна, чтобы в будущем не возникало ошибок с кодировкой.
2)import telebot – слово «import» используется для того, чтобы вызывать библиотеки, а слово «telebot» – название библиотеки которую мы вызываем, в этом случае эта библиотека, которую мы устанавливали в начале нашего мануала под названием pyTelegramBotAPI.
3)from telebot import types –
эта строчка нам нужна для того, чтобы сократить наш код, покажу на примере:
Допустим мы хотим без этой записи добавить кнопку «Главное меню» и мы пишем такой код:
4)glavmenu = telebot.types.ReplyKeyboardMarkup(True, False)
Как вы видите у нас добавляется лишния запись в виде «telebot.types», а если будем писать такой код(как на картинке), то у нас будет такая запись:
glavmenu = types.ReplyKeyboardMarkup(True, False)
Думаю, понятно.
5)
TOKEN = ‘775824922:XAFYr6dQmiXXHxrOG36Xklypew65NIIkF-Y’ – В этой записи мы присваиваем переменной «TOKEN» токен, который мы получили у @BotFather
6)bot = telebot.TeleBot(TOKEN)
– эта запись используется для того, чтобы в будущем очень сильно сократить код, если бы его не было пришлось бы постоянно вместо того, чтобы писать bot.send_message, пришлось писать бы telebot.TeleBot(‘775824922:XAFYr6dQmiXXHxrOG36Xklypew65NIIkF-Y’).send_message – думаю теперь понимаю, для чего это используется.

Код 2

 

def inline(): — Так у нас всегда пишется функция, то есть def – это мы обозначаем саму функцию, а inline – у нас может быть любое название
inlinekey1 = types.InlineKeyboardMarkup()
but_1 = types.InlineKeyboardButton(text=’Назад’, callback_data=’Nazad’)
but_2 = types.InlineKeyboardButton(text=’Хиты’, callback_data=‘Xit’)
but_3 = types.InlineKeyboardButton(text=’Добавить’, callback_data=‘DobavitPlus’)
inlinekey1.add(but_1, but_2, but_3)
return inlinekey1 –
Все полностью мы разбирали чуть выше, в разделе 2.Типы, методы для Telegram ботов, поэтому скажу в кратце. Этот код у нас будет использоваться в будущем, то есть этот код мы написали отдельно как функцию, которую сможем в будущем использовать. Так же return Inlinekey1 – он возвращает нам обратно переменную(просто запомните)

Код 3

Это точно такое же как и предыдущее, для использования в будущем.

 

Код 4

 

@bot.message_handler(commands=[‘start’, ‘info’]) – обычный обработчик сообщений,  с типом commands, который отвечает на запросы /start и /info
def startpg(message): — так же обычная функция которая всегда пишется после создания декоратора(обработчика сообщений), то что в скобках показывает то что мы принимает тип message(просто запомните).
Дальше идет обычный вызов кнопок, так как мы разбирали в разделе 2.Типы, методы для Telegram ботов.
if message.text == ‘/start’: — тут давайте немного затронем трудную тему, это условный оператор «if», во первых я очень надеюсь, что вы посмотрели весь курс по питону который есть в приват группе, а так же немног тут поясню.
Условный оператор «if» используется для проверки чего либо, то есть на русском языке взять наш код то получается «Если сообщение пользователя равно команде /start, то мы выполняем то или иное действие(которое пишется под if, как в примере), думаю все доходчиво обьяснил.
bot.send_message(message.chat.id, ‘Text’, reply_markup=startmenu) – в начале у нас обычный метод отправки сообщений, после все так же как я и объяснял выше, но хочу заметить одно, на параметр reply_markup=startmenuмы его используем для того, чтобы у нас работали кнопки, то есть, мы изначально создали все кнопки, а после нам обязательно нужно вбить этот параметр, иначе не будут работать кнопки(то же самое с инлайн кнопками)
elif message.text == ‘/info’: — «elif» означает тоже самое, что и «if».
Дальше если человек написал в чат «/info», то мы отправим пользователю такое сообщение(как на картинке выше)
Теперь простыми словами, что мы сделали именно в этом коде:
Мы изначально проверили, что если человек пишет /start или /info, то мы будем заходить в этот обработчик сообщений, и вот мы зашли и теперь проверяем, что именно мы написали, если написали /start, то у нас зайдет в первую, а если /info, то заходит во вторую.

Код 5

 

Здесь я не буду рассписывать каждый шаг, потому что от этого вам будет все не понятно.
Сначала мы в обработчике сообщений проверяем, какой тип данных нам поступил, как видим у нас тип данных [‘text’], то есть мы принимаем любой текст, после создаем так же функцию. Далее мы проверяем «Если текст сообщения равен слову Мороженое», то мы выполняем то что под «if», то есть просто создаем кнопки, отправляем сообщение и передаем ему наши кнопки как и объяснял выше «reply_markup=replykey1», все отлично, передали, теперь наши кнопки будут работать. После мы просто отправили сообщение с самим товаром, так же замечу, что parse_mode=”HTML” – это для того, чтобы редактировать текст(более подробно про это объясню в видео), после мы передаем наши инлайн кнопки, которые создавали выше в пункте «2.», так же хочу заметить то, что если мы создаем кнопки не прям в самом коде, а как сделали мы отдельно, то нужно передавать не переменную которую мы присваиваем, а именно функцию, в нашем случаем у нас переменная inlinekey1, а название функции inline(): (посмотрите сейчас пункт 2, чтобы точно все понять)
Дальше мы делаем точно так же, как и я сейчас описал выше.

код 6

 

Вот давайте представим, мы создали инлайн кнопки, они у нас есть, но мы на них нажимаем и все, ничего не происходит. Для того, чтобы наши инлайн кнопки стали выполнять действия, которые мы хотим, нам нужно добавить новый обработчик сообщений @bot.callback_query_handler(func=lambda c: True) (Уже обьяснял выше, для чего это), после мы так же создаем функцию def inlin(c): — где место c и inlin у нас может быть любой текст, но лучше такой же короткий, как у меня.
После if c.data == ‘Nazad’: — так проверяется какая именно инлайн кнопка нам нужна, помните, у нас была сверху запись callback_data = ‘Nazad’, так вот для этого мы и писали это. Все, мы допустим нажали на нашу инлайн кнопку «Назад», эта кнопка служит, для того, чтобы вернуть нас на начальное меню. Поэтому мы при нажатие этой кнопки и создаем такое меню еще раз. Так же не забудьте после текста написать reply_markup=startmenu, иначе не будет работать.
Теперь перейдем ко второму elif c.data == ‘1krug’: здесь мы так же проверяем значение инлайн кнопки.
Но хочу заметить, что мы здесь не отправляем боту сообщение, а используем метод bot.edit_message_text – этот метод нужен для редактирования сообщения, то есть изначально у нас допустим был текст «Привет», после того как нажмут эту кнопку он допустим поменяется на «Пока», думаю суть понятна. Так же запомните написание внутри скобок, («Сначала текст», chat_id=c.message.chat.id, message_id=c.message.message_id) – Это лучше просто запомните и не вдавайтесь в подробности, ведь мы я сейчас вас не учу программированию, а учу редактировать шаблон(код).
После идет не менее интересный метод bot.edit_message_reply_markup – он применяется для того, чтобы изменить инлайн кнопки, допустим у нас была инлайн кнопка «Назад», а мы её сейчас поменяем на инлайн кнопку «Вперед», думаю здесь вы смысл тоже поняли. Все что в скобках, тоже просто лучше запомнить, иначе это очень много заумных объяснений,а на деле все работает по одному принципу, поэтому только запоминание в данном случае – лучшее решение.
И последнее, всегда в самом конце мы пишим bot.polling() – это нам нужно для того, чтобы бот работал безпрерывно.
На этом обучение по коду я думаю подошло к своему логическому завершению, далее начинайте смотреть видео, в котором я более понятно и просто объясняю каждый шаблон(код).

Видео материалы как и готовые шаблоны с ботами будут опубликованы позже.