Мануал Как создать Telegram-бота с кнопками с нуля: пошаговая инструкция


Addset

Администратор
Команда форума
Регистрация
15.05.22
Сообщения
228
Реакции
2
Источник

Telegram боты — отличное решение для автоматизации множества маркетинговых задач. Арбитраж трафика — не исключение. Ранее мы уже рассказывали, как создать чат-бота с нуля под слив на дейтинг. Сегодня же речь пойдет о создании Telegram-бота с кнопками под слив на беттинг.

Если вы совсем далеки от темы, то рекомендуем сначала прочитать, как устроены Telegram-боты, чтобы лучше понимать принцип их работы с технической точки зрения. Мы же не будем ходить вокруг да около и перейдем сразу к делу — к созданию бота с меню под слив на беттинг.

*Спойлер: в конце статьи вас будет ждать файл с готовым ботом.

Какие задачи стоят перед ботом?

Сразу заметим, что слив трафика на беттинг — лишь частный пример. Технически с помощью бота можно будет лить трафик на любую вертикаль — лишь бы хватило фантазии, как все это интегрировать в бота. Но именно беттинг-сфера позволяет в полной мере раскрыть возможности бота, поэтому выбор пал на нее.

В чем суть:
  1. Есть сайт букмекерской конторы.
  2. В нем есть возможность поставить ставку на разные виды спорта.
  3. В каждом виде спорта есть свои лиги, страны и т. д.
  4. Всю эту информацию мы соберем и будем выводить в виде каталога.
  5. Подписчики бота смогут сами выбрать, на какое событие хотят сделать ставку, и уже потом получат ссылку на лендинг.
e135c0fc9bc2aa7114a0c28f084c1800f2c5c24c.png

Скрин интересующей нас навигации сайта БК на примере MostBet

de4a880fc602648416ef436d4c12664bb51f517d.jpeg

Скрин навигации бота

Либо альтернатива:
  1. У вас есть несколько схем от капперов.
  2. Вы создаете меню, разбивая схемы по разным категориям.
  3. Пользователь заходит и видит не очередной пост с одним прогнозом, а полноценный каталог.
  4. Благодаря богатому выбору он с большим шансом будет вовлечен.
5b029f90ec17d6cf9f18ccacbfb4cdbea8fb58cd.png


По такому же принципу можно сделать и своего бота — только дать пользователю больше выбора с помощью меню. К слову, эта же тема актуальна и в гембле при сливе через схемы.

Впрочем, все это лишь примеры возможного использования бота, и его потенциал ими не ограничивается. По сути, с его помощью можно лить траф не только на беттинг. Но так как специфика беттинга подразумевает решение более сложных задач, чем простое создание меню, то в качестве примера будет использована именно эта вертикаль.

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

Создание простого Telegram-бота с кнопками

Первое, что нужно сделать, — настроить наш сервер, создать бота в самом Telegram и получить токен. Для этого:
1. Регистрируемся и авторизируемся на pythonanywhere.
2. Запускаем Bash-консоль, ждем пока сервер будет настроен.

62aff897db92ea5e3d3275fcec6d61f96115f7b4.png

Главное меню бесплатного хостинга pythonanywhere.

3. Инсталлируем pyTelegramBotAPI — модуль, с помощью которого наш бот будет взаимодействовать с API Telegram. Это делается вводом следующей команды:

pip3.9 install --user pyTelegramBotAPI

9895f11e1532de8abb52ec86a62c335d0145ae57.png

Консоль сервера

*3.9 — используемая и сервером pythonanywhere, и Telegram версия Python. Используйте свежую (данная актуальна лишь на момент написания материала) версию, иначе будет ошибка.

4. Запрашиваем у Telegram токен для нашего бота. Для этого просто пишем официальному боту для управления ботами @BotFather и следуем его указаниям. Там ничего сложного, нужно лишь указать название бота в формате ИМЯ_bot. Приставка _bot обязательна. И да, название не должно нарушать правила мессенджера. Когда бот @BotFather выдаст токен — сохраняем его отдельно.

854efc4ceb5b71a2c7708012504bacb013c80288.png

Получение токена через официальный бот Телеги @BotFather

5. Пишем код для логики бота в блокнот или любой другой текстовый редактор:

import telebot #подгружаем модуль телебот
from telebot import types # для указания типов кнопок

bot = telebot.TeleBot('ТОКЕН СЮДА') #задаем токен
@bot.message_handler(commands=['start']) #задаем реакцию на команду /start
def start(message):
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
btn1 = types.KeyboardButton("👋 Поздороваться") #создаем кнопку Поздороваться
btn2 = types.KeyboardButton("Меню") #создаем кнопку Меню
markup.add(btn1, btn2)
bot.send_message(message.chat.id, text="Привет, {0.first_name}! Я тестовый бот для читателей trafficcardinal.com".format(message.from_user), reply_markup=markup) #создаем текст для вывода при активации команды /start

@bot.message_handler(content_types=['text']) #задаем реакцию на новые сообщения #(нажатия кнопок — тоже сообщения)

def func(message):
if(message.text == "👋 Поздороваться"): #задаем реакцию на кнопку Поздороваться
bot.send_message(message.chat.id, text="Привет, {0.first_name}! Я тестовый бот для читателей trafficcardinal.com".format(message.from_user)) #создаем текст для вывода при активации кнопки Поздороваться
elif(message.text == "Меню"): #задаем реакцию на кнопку Меню
markup = types.ReplyKeyboardMarkup(resize_keyboard=True) #обновляем тип используемых кнопок
btna1 = types.KeyboardButton("А1") #создаем кнопку А1
btna2 = types.KeyboardButton("А2") #создаем кнопку А2
back = types.KeyboardButton("Вернуться в главное меню") #создаем кнопку Вернуться в главное меню
markup.add(btna1, btna2, back) #обновляем кнопки у пользователя
bot.send_message(message.chat.id, text="Меню", reply_markup=markup) #создаем текст для вывода при активации кнопки Меню

elif(message.text == "А1"): #задаем реакцию на кнопку А1
bot.send_message(message.chat.id, "А1") #создаем текст для вывода при активации кнопки А1

elif message.text == "А2": #задаем реакцию на кнопку А2
bot.send_message(message.chat.id, text="А2") #создаем текст для вывода при активации кнопки А2

elif (message.text == "Вернуться в главное меню"): #задаем реакцию на кнопку Вернуться в главное меню
markup = types.ReplyKeyboardMarkup(resize_keyboard=True) #обновляем тип используемых кнопок
button1 = types.KeyboardButton("👋 Поздороваться") #создаем кнопку Поздороваться
button2 = types.KeyboardButton("Меню") #создаем кнопку Меню
markup.add(button1, button2) #обновляем кнопки у пользователя
bot.send_message(message.chat.id, text="Вы вернулись в главное меню", reply_markup=markup) #создаем текст для вывода при активации кнопки Вернуться в главное меню
else: #задаем реакцию на ВСЕ ОСТАЛЬНЫЕ ситуации
bot.send_message(message.chat.id, text="На такую комманду я не запрограммировал..") #создаем текст реакции для всех остальных ситуаций

bot.polling(none_stop=True) #запрещаем скрипту «спать» — нужно чтобы бот был всегда был онлайн


Находим фрагмент bot = telebot.TeleBot('ТОКЕН СЮДА') #задаем токен — вставляем токен из ответа @BotFather (см. предыдущий раздел).

Сохраняем файл как «bot.py».

СКАЧАТЬ ИСХОДНЫЙ КОД

6. Загружаем файл на сервер.

ebe115b1441d43e340f824f00d22420cd86266a0.png

Добавление python-скрипта на сервер

7. Запускаем бота, нажав Run.

1b91cf71b9c5698b87cd17e276514f7bceb3368f.png

Инициация обработки скрипта

8. Проверяем результат. Бот должен создать указанные кнопки и реагировать на их нажатия.

dbead58553e9fdac130f1220ec2a0e032cc9daf2.jpeg

Общий принцип работы бота с кнопками

Получилось? Неплохо, поздравляем! Но для полноценного бота под слив трафика двух кнопок маловато, не так ли? Чтобы создать бота под свои нужды, внимательно присмотритесь к коду выше. Символом # отмечены фрагменты кода, которые не будут обрабатываться сервером. В них указаны пояснения ко всему, что происходит в коде.

Для расширения функциональности бота нас интересуют следующие фрагменты:
  • #задаем реакцию на кнопку;
  • #обновляем тип используемых кнопок;
  • #создаем кнопку (обычно несколько раз подряд);
  • #обновляем кнопки у пользователя;
  • #создаем текст для вывода при активации кнопки.

По сути, перед нами упрощенная интерпретация логики работы основной части бота.

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

Создаем бота с кнопкой для Telegram под слив на беттинг

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

  1. Добавить больше кнопок в раздел Меню, исходя их видов спорта.
elif(message.text == "Меню"): #ничего не меняли
markup = types.ReplyKeyboardMarkup(resize_keyboard=True) #ничего не меняли
btna1 = types.KeyboardButton("Футбол") #заменили текст А1 на Футбол
btna2 = types.KeyboardButton("Баскетбол") #заменили текст А2 на баскетбол
btna3 = types.KeyboardButton("ММА") #создали новую кнопку ММА
btna4 = types.KeyboardButton("Формула-1") #создали новую кнопку Формула-1
back = types.KeyboardButton("Вернуться в главное меню") #ничего не меняли
markup.add(btna1, btna2, btna3, bnta4, back) #добавили кнопки btna3 и btna4
bot.send_message(message.chat.id, text="Меню", reply_markup=markup) #ничего не меняли


  1. Добавить реакцию на каждую кнопку раздела с меню, с учетом того, что у каждого элемента меню будет свое подменю.
elif(message.text == "Футбол"): #задаем реакцию на кнопку Футбол (бывшая кнопка А1)
markup = types.ReplyKeyboardMarkup(resize_keyboard=True) #обновляем тип используемых кнопок
btna1b1 = types.KeyboardButton("Лига A1B1") #cоздаем кнопку Лига A1B1
btna1b2 = types.KeyboardButton("Лига A1B2") #cоздаем кнопку Лига A1B2
back = types.KeyboardButton("Вернуться в главное меню") #cоздаем кнопку Вернуться в главное меню
markup.add(btna1b1, btna1b2, back) #обновляем кнопки у пользователя
bot.send_message(message.chat.id, text="Футбол", reply_markup=markup) #создаем текст для вывода при активации кнопки Футбол


По такому же принципу задаем реакцию для нажатия на каждую из кнопок раздела меню — в зависимости от того, сколько нам их нужно.

f8f2b0765d75814d214a3f78497a27a9f949d489.jpeg

Создание более сложного меню

СКАЧАТЬ ИСХОДНЫЙ КОД

  1. Создать реакцию на кнопки подменю для каждой из категорий меню. По такому же принципу.
elif(message.text == "Лига A1B1"): #задаем реакцию на кнопку Лига A1B1
markup = types.ReplyKeyboardMarkup(resize_keyboard=True) #обновляем тип используемых кнопок
btna1b1c1 = types.KeyboardButton("Оффер A1B1С1") #cоздаем кнопку Лига A1B1C1
btna1b2c2 = types.KeyboardButton("Оффер A1B1С2") #cоздаем кнопку Лига A1B1C2
back = types.KeyboardButton("Вернуться в главное меню") #cоздаем кнопку Вернуться в главное меню
markup.add(btna1b1c1, btna1b1c2, back) #обновляем кнопки у пользователя
bot.send_message(message.chat.id, text="Лига A1B1", reply_markup=markup) #создаем текст для вывода при активации кнопки Лига A1B1


СКАЧАТЬ ИСХОДНЫЙ КОД

По такому же принципу задаем реакцию для нажатия на каждую из кнопок разделов подкатегорий меню — в зависимости от того, сколько нам их нужно.

  1. Создать реакцию на каждый оффер для каждого раздела из подкатегорий меню.

elif(message.text == "Оффер A1B1C1"): #задаем реакцию на кнопку Оффер A1B1C1
markup = types.InlineKeyboardMarkup() #обновляем тип используемых кнопок ОБРАТИТЕ ВНИМАНИЕ — ЗДЕСЬ УЖЕ ДРУГОЙ ТИП
btn_my_site= types.InlineKeyboardButton(text='Наш сайт', url='https://trafficcardinal.com') #cоздаем кнопку со ссылкой
markup.add(btn_my_site) #обновляем кнопки у пользователя
bot.send_message(message.chat.id, "Нажми на кнопку и перейди на наш сайт.", reply_markup = markup) #создаем текст для вывода при активации кнопки Оффер A1B1C1


cc70140fa86e47505178a6fb67830841263f1295.jpeg

Создание меню с несколькими уровнями вложений и инлайн-кнопкой для перехода по ссылке.

Именно здесь можно уже не просто писать текст, а интегрировать полноценные креативы.

  1. При необходимости сделать большую глубину вложений — просто повторяйте шаги 2-3.
  2. Не забываем добавлять красоты, например, подойдут смайлики.
  3. Сохраняем изменения (совет — делайте это в отдельный файл).
  4. Загружаем новую логику работы бота на сайт.

СКАЧАТЬ ИСХОДНЫЙ КОД

Готовый Telegram-бот с меню

В конце статьи вы сможете скачать готовый бот с меню. К сожалению, код бота получился слишком длинным для того, чтобы размещать его в «теле» статьи. Правильно ли писать настолько длинный код под столь простую задачу с точки зрения алгоритмизации? Нет. И в следующей статье мы будет это исправлять, делая код более оптимальным и универсальным.

Но мы с вами не программисты. Нам хватает чем еще заняться при сливе трафика, помимо изучения подобных тем. Поэтому наша задача — научиться создавать ботов с минимальными временными затратами, чтобы можно было «на коленке» собрать своего бота и начать заливать траф. А для этой цели код вполне сгодится.

3f5d2293b752b13d5fa249da3eb3f11fc92f8875.jpeg

Демонстрация оформления бота под беттинг

Итак, что же может бот:
  • Здороваться по имени пользователя при инициации команды /start.
  • Перемещаться по навигационному меню на 4 вложения.
  • Перемещаться «Вперед» и «Назад» между страницами меню.
  • Возвращаться в главное меню с любого «этажа» вложенных подменю.
  • Выводить инлайн-кнопку со ссылкой.
54405d87e9988fc11445899064035dede313baf2.jpeg

Демонстрация оформления бота под беттинг

При ручном управлении этого более чем достаточно. Для того, чтобы привести бота в соответствующий вид, пригодный для выполнения задачи по сливу, необходимо лишь:
  • Изменить текст в кавычках, описывающий кнопки, на нужный вам. Например, «А1» на «Футбол».
  • Вместо ссылки на наш сайт вставить ссылки на продвигаемые вами офферы. Либо же на смартлинк.
  • Вместо надписи «Нажми на кнопку и перейди на наш сайт» добавить ваши креативы, исходя из специфики офферов.
*Совет: Обращайте внимание на консоль сервера. Если вы случайно накосячите с кодом — она укажет вам, где именно ошибка. Даже лишний пробел может привести к тому, что бот не будет работать.

СКАЧАТЬ ИСХОДНЫЙ КОД

Подводя итоги

Как видите, создать бота с кнопками не так уж и сложно. Пусть даже и приходится долго ковыряться с кодом. Не слишком удобно, не так ли? Мы такого же мнения. Именно поэтому статья и разбита на три части. Во второй части мы научим вас делать бота, код которого не придется ковырять, — достаточно будет лишь создать структуру меню в txt-файле. До скорой встречи, друзья!
 

Сверху Снизу