- Регистрация
- 15.05.22
- Сообщения
- 263
- Реакции
- 14
Источник
Telegram боты — отличное решение для автоматизации множества маркетинговых задач. Арбитраж трафика — не исключение. Ранее мы уже рассказывали, как создать чат-бота с нуля под слив на дейтинг. Сегодня же речь пойдет о создании Telegram-бота с кнопками под слив на беттинг.
Если вы совсем далеки от темы, то рекомендуем сначала прочитать, как устроены Telegram-боты, чтобы лучше понимать принцип их работы с технической точки зрения. Мы же не будем ходить вокруг да около и перейдем сразу к делу — к созданию бота с меню под слив на беттинг.
*Спойлер: в конце статьи вас будет ждать файл с готовым ботом.
В чем суть:
Скрин интересующей нас навигации сайта БК на примере MostBet
Скрин навигации бота
Либо альтернатива:
По такому же принципу можно сделать и своего бота — только дать пользователю больше выбора с помощью меню. К слову, эта же тема актуальна и в гембле при сливе через схемы.
Впрочем, все это лишь примеры возможного использования бота, и его потенциал ими не ограничивается. По сути, с его помощью можно лить траф не только на беттинг. Но так как специфика беттинга подразумевает решение более сложных задач, чем простое создание меню, то в качестве примера будет использована именно эта вертикаль.
Также заметим, что ввиду объемности материала, статья будет состоять из трех частей. В этой части будут реализованы задачи, перечисленные выше. Во второй и третьей части мы будет делать бота более адаптивным и универсальным, чтобы можно было лить на несколько БК сразу.
1. Регистрируемся и авторизируемся на pythonanywhere.
2. Запускаем Bash-консоль, ждем пока сервер будет настроен.
Главное меню бесплатного хостинга pythonanywhere.
3. Инсталлируем pyTelegramBotAPI — модуль, с помощью которого наш бот будет взаимодействовать с API Telegram. Это делается вводом следующей команды:
pip3.9 install --user pyTelegramBotAPI
Консоль сервера
*3.9 — используемая и сервером pythonanywhere, и Telegram версия Python. Используйте свежую (данная актуальна лишь на момент написания материала) версию, иначе будет ошибка.
4. Запрашиваем у Telegram токен для нашего бота. Для этого просто пишем официальному боту для управления ботами @BotFather и следуем его указаниям. Там ничего сложного, нужно лишь указать название бота в формате ИМЯ_bot. Приставка _bot обязательна. И да, название не должно нарушать правила мессенджера. Когда бот @BotFather выдаст токен — сохраняем его отдельно.
Получение токена через официальный бот Телеги @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. Загружаем файл на сервер.
Добавление python-скрипта на сервер
7. Запускаем бота, нажав Run.
Инициация обработки скрипта
8. Проверяем результат. Бот должен создать указанные кнопки и реагировать на их нажатия.
Общий принцип работы бота с кнопками
Получилось? Неплохо, поздравляем! Но для полноценного бота под слив трафика двух кнопок маловато, не так ли? Чтобы создать бота под свои нужды, внимательно присмотритесь к коду выше. Символом # отмечены фрагменты кода, которые не будут обрабатываться сервером. В них указаны пояснения ко всему, что происходит в коде.
Для расширения функциональности бота нас интересуют следующие фрагменты:
По сути, перед нами упрощенная интерпретация логики работы основной части бота.
Чтобы расширить функционал бота и сделать его пригодным для слива на беттинг, достаточно добавить больше кнопок, исходя из ваших нужд. При этом нужно выполнить каждый из указанных шагов выше. Давайте попробуем это сделать и заодно адаптировать бота по беттинг.
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) #ничего не меняли
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) #создаем текст для вывода при активации кнопки Футбол
По такому же принципу задаем реакцию для нажатия на каждую из кнопок раздела меню — в зависимости от того, сколько нам их нужно.
Создание более сложного меню
СКАЧАТЬ ИСХОДНЫЙ КОД
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
СКАЧАТЬ ИСХОДНЫЙ КОД
По такому же принципу задаем реакцию для нажатия на каждую из кнопок разделов подкатегорий меню — в зависимости от того, сколько нам их нужно.
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
Создание меню с несколькими уровнями вложений и инлайн-кнопкой для перехода по ссылке.
Именно здесь можно уже не просто писать текст, а интегрировать полноценные креативы.
СКАЧАТЬ ИСХОДНЫЙ КОД
Но мы с вами не программисты. Нам хватает чем еще заняться при сливе трафика, помимо изучения подобных тем. Поэтому наша задача — научиться создавать ботов с минимальными временными затратами, чтобы можно было «на коленке» собрать своего бота и начать заливать траф. А для этой цели код вполне сгодится.
Демонстрация оформления бота под беттинг
Итак, что же может бот:
Демонстрация оформления бота под беттинг
При ручном управлении этого более чем достаточно. Для того, чтобы привести бота в соответствующий вид, пригодный для выполнения задачи по сливу, необходимо лишь:
СКАЧАТЬ ИСХОДНЫЙ КОД
Telegram боты — отличное решение для автоматизации множества маркетинговых задач. Арбитраж трафика — не исключение. Ранее мы уже рассказывали, как создать чат-бота с нуля под слив на дейтинг. Сегодня же речь пойдет о создании Telegram-бота с кнопками под слив на беттинг.
Если вы совсем далеки от темы, то рекомендуем сначала прочитать, как устроены Telegram-боты, чтобы лучше понимать принцип их работы с технической точки зрения. Мы же не будем ходить вокруг да около и перейдем сразу к делу — к созданию бота с меню под слив на беттинг.
*Спойлер: в конце статьи вас будет ждать файл с готовым ботом.
Какие задачи стоят перед ботом?
Сразу заметим, что слив трафика на беттинг — лишь частный пример. Технически с помощью бота можно будет лить трафик на любую вертикаль — лишь бы хватило фантазии, как все это интегрировать в бота. Но именно беттинг-сфера позволяет в полной мере раскрыть возможности бота, поэтому выбор пал на нее.В чем суть:
- Есть сайт букмекерской конторы.
- В нем есть возможность поставить ставку на разные виды спорта.
- В каждом виде спорта есть свои лиги, страны и т. д.
- Всю эту информацию мы соберем и будем выводить в виде каталога.
- Подписчики бота смогут сами выбрать, на какое событие хотят сделать ставку, и уже потом получат ссылку на лендинг.

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

Скрин навигации бота
Либо альтернатива:
- У вас есть несколько схем от капперов.
- Вы создаете меню, разбивая схемы по разным категориям.
- Пользователь заходит и видит не очередной пост с одним прогнозом, а полноценный каталог.
- Благодаря богатому выбору он с большим шансом будет вовлечен.

По такому же принципу можно сделать и своего бота — только дать пользователю больше выбора с помощью меню. К слову, эта же тема актуальна и в гембле при сливе через схемы.
Впрочем, все это лишь примеры возможного использования бота, и его потенциал ими не ограничивается. По сути, с его помощью можно лить траф не только на беттинг. Но так как специфика беттинга подразумевает решение более сложных задач, чем простое создание меню, то в качестве примера будет использована именно эта вертикаль.
Также заметим, что ввиду объемности материала, статья будет состоять из трех частей. В этой части будут реализованы задачи, перечисленные выше. Во второй и третьей части мы будет делать бота более адаптивным и универсальным, чтобы можно было лить на несколько БК сразу.
Создание простого Telegram-бота с кнопками
Первое, что нужно сделать, — настроить наш сервер, создать бота в самом Telegram и получить токен. Для этого:1. Регистрируемся и авторизируемся на pythonanywhere.
2. Запускаем Bash-консоль, ждем пока сервер будет настроен.

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

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

Получение токена через официальный бот Телеги @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. Загружаем файл на сервер.

Добавление python-скрипта на сервер
7. Запускаем бота, нажав Run.

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

Общий принцип работы бота с кнопками
Получилось? Неплохо, поздравляем! Но для полноценного бота под слив трафика двух кнопок маловато, не так ли? Чтобы создать бота под свои нужды, внимательно присмотритесь к коду выше. Символом # отмечены фрагменты кода, которые не будут обрабатываться сервером. В них указаны пояснения ко всему, что происходит в коде.
Для расширения функциональности бота нас интересуют следующие фрагменты:
- #задаем реакцию на кнопку;
- #обновляем тип используемых кнопок;
- #создаем кнопку (обычно несколько раз подряд);
- #обновляем кнопки у пользователя;
- #создаем текст для вывода при активации кнопки.
По сути, перед нами упрощенная интерпретация логики работы основной части бота.
Чтобы расширить функционал бота и сделать его пригодным для слива на беттинг, достаточно добавить больше кнопок, исходя из ваших нужд. При этом нужно выполнить каждый из указанных шагов выше. Давайте попробуем это сделать и заодно адаптировать бота по беттинг.
Создаем бота с кнопкой для Telegram под слив на беттинг
Итак, допустим, вы ходим сделать так, чтобы пользователь, нажав на меню, получал список из нескольких видов спорта, в каждом из которых будет своя лига, а в каждой лиге — актуальные офферы. Для этого нам нужно немного адаптировать код выше, а именно:- Добавить больше кнопок в раздел Меню, исходя их видов спорта.
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) #ничего не меняли
- Добавить реакцию на каждую кнопку раздела с меню, с учетом того, что у каждого элемента меню будет свое подменю.
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) #создаем текст для вывода при активации кнопки Футбол
По такому же принципу задаем реакцию для нажатия на каждую из кнопок раздела меню — в зависимости от того, сколько нам их нужно.

Создание более сложного меню
СКАЧАТЬ ИСХОДНЫЙ КОД
- Создать реакцию на кнопки подменю для каждой из категорий меню. По такому же принципу.
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
СКАЧАТЬ ИСХОДНЫЙ КОД
По такому же принципу задаем реакцию для нажатия на каждую из кнопок разделов подкатегорий меню — в зависимости от того, сколько нам их нужно.
- Создать реакцию на каждый оффер для каждого раздела из подкатегорий меню.
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

Создание меню с несколькими уровнями вложений и инлайн-кнопкой для перехода по ссылке.
Именно здесь можно уже не просто писать текст, а интегрировать полноценные креативы.
- При необходимости сделать большую глубину вложений — просто повторяйте шаги 2-3.
- Не забываем добавлять красоты, например, подойдут смайлики.
- Сохраняем изменения (совет — делайте это в отдельный файл).
- Загружаем новую логику работы бота на сайт.
СКАЧАТЬ ИСХОДНЫЙ КОД
Готовый Telegram-бот с меню
В конце статьи вы сможете скачать готовый бот с меню. К сожалению, код бота получился слишком длинным для того, чтобы размещать его в «теле» статьи. Правильно ли писать настолько длинный код под столь простую задачу с точки зрения алгоритмизации? Нет. И в следующей статье мы будет это исправлять, делая код более оптимальным и универсальным.Но мы с вами не программисты. Нам хватает чем еще заняться при сливе трафика, помимо изучения подобных тем. Поэтому наша задача — научиться создавать ботов с минимальными временными затратами, чтобы можно было «на коленке» собрать своего бота и начать заливать траф. А для этой цели код вполне сгодится.

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

Демонстрация оформления бота под беттинг
При ручном управлении этого более чем достаточно. Для того, чтобы привести бота в соответствующий вид, пригодный для выполнения задачи по сливу, необходимо лишь:
- Изменить текст в кавычках, описывающий кнопки, на нужный вам. Например, «А1» на «Футбол».
- Вместо ссылки на наш сайт вставить ссылки на продвигаемые вами офферы. Либо же на смартлинк.
- Вместо надписи «Нажми на кнопку и перейди на наш сайт» добавить ваши креативы, исходя из специфики офферов.
СКАЧАТЬ ИСХОДНЫЙ КОД