November 25, 2023

Разработка бота и установка его на  бесплатный сервер

Здравствуйте дорогой читатель!

В этой схеме ты получишь доступ к знания в сфере ботостроения в нашем любимом мессенджере Telegram!

Итак начнем с самого начала!

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

Для создания бота, вам необходимо написать отцу всех ботов - @BotFather

1.1 Заходите в бота нажимаете старт, после этого вводите команду "/newbot"

Команда /newbot

1.2 Вводите название бота: В моем случае это схема.

Ввод названия

1.3 Вводим адрес нашего бота: тот который поможет найти нашего бота через @

Адрес для бота и получение токена

После введения адреса вы получите токен, который необходимо указать в коде с самим ботом.

Перейдем к коду с ботом.

Работать с кодом необходимо через ide-платформы, они позволяют подсвечивать синтаксис нашего кода, и компиллировать наши приложения.

Давайте без лишних слов сразу к делу

Скачиваем https://www.python.org/downloads/release/python-372/

После того как скачали устанавливаем необходимые библиотеки:

Для этого запускаем командную строку (win+r или поиск cmd)

Вводим следующие команды

pip install request

pip install pyTelegramBotAPI

После устанавливаем 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) — по нему ничего впринципи знать ничего не нужно, все увидете в самом коде, и будет все понятно

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

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

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 request

pip install --user pytelegrambotapi

После переходим в раздел Files и загружаем бота:

После выбираем файл с названием нашего бота

И выбираем Run this file

Ждем запуска бота.Все ваш бот готов к работе.