Разработка бота и установка его на бесплатный сервер
Здравствуйте дорогой читатель!
В этой схеме ты получишь доступ к знания в сфере ботостроения в нашем любимом мессенджере Telegram!
Для создания бота, вам необходимо написать отцу всех ботов - @BotFather
1.1 Заходите в бота нажимаете старт, после этого вводите команду "/newbot"
1.2 Вводите название бота: В моем случае это схема.
1.3 Вводим адрес нашего бота: тот который поможет найти нашего бота через @
После введения адреса вы получите токен, который необходимо указать в коде с самим ботом.
Работать с кодом необходимо через ide-платформы, они позволяют подсвечивать синтаксис нашего кода, и компиллировать наши приложения.
Давайте без лишних слов сразу к делу
Скачиваем https://www.python.org/downloads/release/python-372/
После того как скачали устанавливаем необходимые библиотеки:
Для этого запускаем командную строку (win+r или поиск cmd)
После устанавливаем PyCharm COMMUNITY
Ставите все галочки, как на скриншоте.
Типы, методы для Telegram ботов.
(Я прекрасно понимаю, что возможно вы в первый раз сталкиваете с программированием и для вас это на данный момент все очень сложно, поэтому я буду все объяснять вам очень простыми словами и примерами. )
Теперь давайте разберем все по очереди.
1) startmenu – это переменная, которая может быть названа как только вы пожелаете (только нельзя начинать переменную с цифры по типу: 1startme).
2) = – это значит что мы присваиваем что-либо переменной «startmenu».
3) types.ReplyKeyboardMarkup(True, False) – Это тип, который позволяет нам добавлять кнопки(просто запомните его написание). Элемент в скобках «True» – Отвечает у нас за размер кнопок (если его не добавлять или поставить вместо него «False», то кнопки будут огромные и не удобные). Элемент в скобках «False» – Отвечает у нас за сворачивание кнопки после её нажатия (если поставить «True», то кнопка будет сворачиваться при нажатие на неё)
4) startmenu.row(‘Название кнопки’) – где «startmenu» – это название переменной, а «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) – Добавляем кнопку в эту переменную(просто нужно это запомнить). В скобках нужно указать название переменных в которых у нас находятся кнопки.
Самые важные по моему мнению типы мы рассмотрели, теперь давайте рассмотрим методы. bot.send_message(message.chat.id, ‘Текст’) – это метод, думаю вы догадываетесь нужен для отправки сообщения пользователю от лица бота.
bot.send_photo (message.chat.id, ‘FILE ID’) – этот метод мы используем для отправки пользователю фотографии/картинки.
3.Декораторы(обработчики сообщения)
Декораторы нужны для того, чтобы понимать какое сообщение пишет пользователь, в коде они выглядят вот так:
@bot.message_handler(commands=['start'])
@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) — по нему ничего впринципи знать ничего не нужно, все увидете в самом коде, и будет все понятно
В этой главе мы будем рассматривать и разбирать один из примеров наших ботов (все будет идти поэтапно и чувством с тактом и расстановкой к каждой строчке).
1.Все будет идти строго по очереди, то есть сверху-вниз.
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)
def inline(): — Так у нас всегда пишется функция, то есть def – это мы обозначаем саму функцию, а inline – у нас может быть любое название inlinekey1 = types.InlineKeyboardMarkup() but_1 = types.InlineKeyboardButton(text=’Текст’, callback_data=’Nazad’) but_2 = types.InlineKeyboardButton(text=’Текст2’, callback_data=‘Xit’) but_3 = types.InlineKeyboardButton(text=’Текст3’, callback_data=‘DobavitPlus’) inlinekey1.add(but_1, but_2, but_3) return inlinekey1 – Все полностью мы разбирали чуть выше, в разделе 2.Типы, методы для Telegram ботов, поэтому скажу в кратце. Этот код у нас будет использоваться в будущем, то есть этот код мы написали отдельно как функцию, которую сможем в будущем использовать. Так же return Inlinekey1 – он возвращает нам обратно переменную(просто запомните)
После идет не менее интересный метод bot.edit_message_reply_markup – он применяется для того, чтобы изменить инлайн кнопки, допустим у нас была инлайн кнопка «Назад», а мы её сейчас поменяем на инлайн кнопку «Вперед», думаю здесь вы смысл тоже поняли. Все что в скобках, тоже просто лучше запомнить, иначе это очень много заумных объяснений,а на деле все работает по одному принципу, поэтому только запоминание в данном случае – лучшее решение. И последнее, всегда в самом конце мы пишим bot.polling() – это на нужно для того, чтобы бот работал безпрерывно.
На этом этапе я закончу. В коде указанны комеентарии которые помогут разобраться. В случае возникновения проблем пишите @SaintIosif
Установка бота на сервер(бесплатный)
Переходим на сайт https://www.pythonanywhere.com
Жмем Create a Beginner account
После переходим в поле Consoles
Ждем загрузки и вводим команды
pip install --user pytelegrambotapi
После переходим в раздел Files и загружаем бота:
После выбираем файл с названием нашего бота