Как создать бот-гороскоп в Telegram своими руками?
Бот-гороскоп — неплохой способ аккумулировать траф под последующий залив на амулеты, гадалок и прочую эзотерику. А бесплатный бот для гороскопов — лучшее решение. Даже если лить напрямую не получится — вы соберете базу пользователей, интересующихся мистикой. А это уже неплохо.
В сегодняшнем материале мы создадим бота с гороскопами для Telegram, научим его генерировать «предсказания» на основе фраз-шаблонов. Все это делается для того, чтобы время от времени подкидывать пользователям офферы с амулетами, гадалками и т.п. Подробнее про способы залива на эзотерику вы можете прочитать в материале.
*Спойлер: в самом конце расположен текстовик с исходным кодом.
Какие задачи стоят перед ботом?
С точки зрения алгоритмизации бот довольно простой — но ведь создание контента для гороскопов никогда и не было сложным делом. Итак, наш бот должен:
- Здороваться по имени (если указано).
- Анализировать сообщения от пользователя.
- Предлагать выбрать знак зодиака.
- Генерировать «предсказания» случайным образом на основе фраз-шаблонов из текстовиков (вместо баз данных мы возьмем именно текстовики — чтобы все было максимально простым в реализации).
- Реагировать на неизвестные команды просьбой написать /help.
- Выводить инструкцию при вводе команды /help.
Выглядит объемно, но на практике ничего сложного. Ниже мы рассмотрим каждый шаг алгоритма, чтобы все было максимально понятно. Если лень разбираться, можете просто скопировать код и шаблоны с фразами — бот будет работать.
Алгоритм гороскоп-бота для Telegram
Для лучшего понимания сути распишем то, как будет генерироваться «астрологический прогноз».Он будет состоять из 4 частей:
- Первая часть — предложение, задающее тон прогноза.
- Вторая часть — условие для потенциально возможной ситуации.
- Третья часть — решение возможной ситуации.
- Четвертая часть — предложение с еще одной ситуацией и ее решением.
Все эти части в случайном порядке перемешиваются между собой в полноценное «астрологическое повествование». В примере использовано по 5 вариантов фраз-шаблонов, но вы всегда сможете добавить в текстовики столько шаблонов, сколько вам будет нужно. Чем их больше — тем ниже вероятность, что один и тот же прогноз продублируется.
Теперь, когда мы поняли принцип работы алгоритма бота-гороскопа — перейдем к его созданию.
Создание бота для гороскопов в Telegram
Начнем с настройки сервера, создания бот-аккаунта в Telegram и присвоения боту токента для доступа. Для этого:
1. Создаем аккаунт на платформеpythonanywhere.
2. Инициируем Bash-консоль, ждем пока сервер завершит автонастройку.
3. Подгружаем pyTelegramBotAPI — необходимый для подключения к API Telegram модуль. Для этого:
pip3.9 install --user pyTelegramBotAPI
*3.9 — поточная версия Python к моменту публикации материала. Учтите, что она может измениться к моменту, когда вы будете читать статью.
4. Стучим в личку бота @BotFather— делаем все по инструкции. Получаем токен доступа. Сохраняем его отдельно.
5. В любом текстовом редакторе пишем следующий код:
Подключаем модуль случайных чисел
import random#
Подключаем модуль для Телеграма
import telebot
# Указываем токенbot = telebot.TeleBot(ТОКЕН СЮДА')
# Импортируем типы из модуля, чтобы создавать кнопки
from telebot import types
# Заготовки для трёх предложений
with open("first.txt", "r") as f1:
first = f1.readlines()
with open("second.txt", "r") as f2:
second = f2.readlines()
with open("second_add.txt", "r") as f2_add:
second_add = f2_add.readlines()
with open("third.txt", "r") as f3:
third = f3.readlines()
# Метод, который получает сообщения и обрабатывает их
@bot.message_handler(content_types=['text'])
def get_text_messages(message):
# Если написали «Привет»
if message.text == "Привет":
# Пишем приветствие
bot.send_message(message.from_user.id, "Привет, {0.first_name}! \n Cейчас я расскажу тебе гороскоп на сегодня.".format(message.from_user))
# Готовим кнопки
keyboard = types.InlineKeyboardMarkup()
# По очереди готовим текст и обработчик для каждого знака зодиака
key_oven = types.InlineKeyboardButton(text='♈ Овен ♈', callback_data='zodiac')
# И добавляем кнопку на экран
keyboard.add(key_oven)
key_telec = types.InlineKeyboardButton(text='♉ Телец ♉', callback_data='zodiac')
keyboard.add(key_telec)
key_bliznecy = types.InlineKeyboardButton(text='♊ Близнецы ♊', callback_data='zodiac')
keyboard.add(key_bliznecy)
key_rak = types.InlineKeyboardButton(text='♋ Рак ♋', callback_data='zodiac')
keyboard.add(key_rak)
key_lev = types.InlineKeyboardButton(text='♌ Лев ♌', callback_data='zodiac')
keyboard.add(key_lev)
key_deva = types.InlineKeyboardButton(text='♍ Дева ♍', callback_data='zodiac')
keyboard.add(key_deva)
key_vesy = types.InlineKeyboardButton(text='♎ Весы ♎', callback_data='zodiac')
keyboard.add(key_vesy)
key_scorpion = types.InlineKeyboardButton(text='♏ Скорпион ♏', callback_data='zodiac')
keyboard.add(key_scorpion)key_strelec = types.InlineKeyboardButton(text='♐ Стрелец ♐', callback_data='zodiac')
keyboard.add(key_strelec)
key_kozerog = types.InlineKeyboardButton(text='♑ Козерог ♑', callback_data='zodiac')
keyboard.add(key_kozerog)
key_vodoley = types.InlineKeyboardButton(text='♒ Водолей ♒', callback_data='zodiac')
keyboard.add(key_vodoley)
key_ryby = types.InlineKeyboardButton(text='♓ Рыбы ♓', callback_data='zodiac')
keyboard.add(key_ryby)
# Показываем все кнопки сразу и пишем сообщение о выбореbot.send_message(message.from_user.id, text='Выбери свой знак зодиака', reply_markup=keyboard)
elif message.text == "/help":
bot.send_message(message.from_user.id, "Напиши Привет")
else:
bot.send_message(message.from_user.id, "Я тебя не понимаю. Напиши /help.")
# Обработчик нажатий на кнопки
@bot.callback_query_handler(func=lambda call: True)
def callback_worker(call):
# Если нажали на одну из 12 кнопок — выводим гороскоп
if call.data == "zodiac":
# Формируем гороскоп
msg = random.choice(first) + ' ' + random.choice(second) + ' ' + random.choice(second_add) + ' ' + random.choice(third)msg = msg.replace("\n","")
# Отправляем текст в Телеграм
bot.send_message(call.message.chat.id, msg)
# Запускаем постоянный опрос бота в Телеграмеbot.polling(none_stop=True, interval=0)
Через поиск (ctrl+F) по файлу, находим фрагментbot = telebot.TeleBot(ТОКЕН СЮДА')— вставляем токен полученный в @BotFather.
Сохраняем текстовик как «bott.py».
6. Кладем скрипт в корень сервера.
9. Создаем файлы фразами-шаблонами. Для этого в любом текстовом редакторе пишем фразы-шаблоны по инструкции из раздела выше. Каждую фразу — с новой строки. И сохраняем 4 файла как:
- first.txt
- second.txt
- second_add.txt
- third.txt
Примеры файлов с фразами-шаблонами можно взять в конце статьи.
10. Загружаем файлы с фразами-шаблонами на сервер также, как файл python-скрипта из пункта 6.
11. Инициируем бота нажатием Run.
12. Тестим результат работы.
Исходный код и шаблоны
ИСХОДНЫЙ КОД PYTHON —БОТ-ГОРОСКОП ДЛЯ TELEGRAM
ШАБЛОНЫ — 1 ЧАСТЬ ФРАЗЫ
ШАБЛОНЫ — 2.1 ЧАСТЬ ФРАЗЫ
ШАБЛОНЫ — 2.2 ЧАСТЬ ФРАЗЫ
ШАБЛОЫН — 3 ЧАСТЬ ФРАЗЫ
Подводя итоги
Потратив буквально 5 минут, мы с вами создали бота-гороскоп, способного генерировать «астрологические предсказания». Теперь дело за малым — раскрутить его и, время от времени, подкидывать пользователям эзотерические офферы. Впрочем, они ведь могут быть не только эзотерическими — гороскопами интересуются разные типы ЦА ;)
Полная версия стать:
Еще больше материалов от профи для арбитражников, маркетологов и всех, кто работает с трафиком — https://trafficcardinal.com
Также подписывайтесь на наш Телеграм — https://t.me/trafficcardinal