Как создать бот-гороскоп в Telegram своими руками?

Как создать бот-гороскоп в Telegram своими руками?

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

В сегодняшнем материале мы создадим бота с гороскопами для Telegram, научим его генерировать «предсказания» на основе фраз-шаблонов. Все это делается для того, чтобы время от времени подкидывать пользователям офферы с амулетами, гадалками и т.п. Подробнее про способы залива на эзотерику вы можете прочитать в материале.

*Спойлер: в самом конце расположен текстовик с исходным кодом.

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

С точки зрения алгоритмизации бот довольно простой — но ведь создание контента для гороскопов никогда и не было сложным делом. Итак, наш бот должен:

  • Здороваться по имени (если указано).
  • Анализировать сообщения от пользователя.
  • Предлагать выбрать знак зодиака.
  • Генерировать «предсказания» случайным образом на основе фраз-шаблонов из текстовиков (вместо баз данных мы возьмем именно текстовики — чтобы все было максимально простым в реализации).
  • Реагировать на неизвестные команды просьбой написать /help.
  • Выводить инструкцию при вводе команды /help.

Выглядит объемно, но на практике ничего сложного. Ниже мы рассмотрим каждый шаг алгоритма, чтобы все было максимально понятно. Если лень разбираться, можете просто скопировать код и шаблоны с фразами — бот будет работать.

Алгоритм гороскоп-бота для Telegram

Для лучшего понимания сути распишем то, как будет генерироваться «астрологический прогноз».Он будет состоять из 4 частей:

  • Первая часть — предложение, задающее тон прогноза.
  • Вторая часть — условие для потенциально возможной ситуации.
  • Третья часть — решение возможной ситуации.
  • Четвертая часть — предложение с еще одной ситуацией и ее решением.
Пример фраз шаблонов — фраза из каждого файла может быть соединена с фразами из других файлов, без потери смысла. (Порядок фраз: 1, 2.1, 2.2, 3)
Пример фраз шаблонов — фраза из каждого файла может быть соединена с фразами из других файлов, без потери смысла. (Порядок фраз: 1, 2.1, 2.2, 3)

Все эти части в случайном порядке перемешиваются между собой в полноценное «астрологическое повествование». В примере использовано по 5 вариантов фраз-шаблонов, но вы всегда сможете добавить в текстовики столько шаблонов, сколько вам будет нужно. Чем их больше — тем ниже вероятность, что один и тот же прогноз продублируется.

Теперь, когда мы поняли принцип работы алгоритма бота-гороскопа — перейдем к его созданию.

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

Начнем с настройки сервера, создания бот-аккаунта в Telegram и присвоения боту токента для доступа. Для этого:

1. Создаем аккаунт на платформеpythonanywhere.

2. Инициируем Bash-консоль, ждем пока сервер завершит автонастройку.

Рабочий кабинет платформы <a href="https://api.vc.ru/v2.8/redirect?to=https%3A%2F%2Fwww.pythonanywhere.com%2F&postId=483084" rel="nofollow noreferrer noopener" target="_blank">pythonanywhere</a>
Рабочий кабинет платформы pythonanywhere

3. Подгружаем pyTelegramBotAPI — необходимый для подключения к API Telegram модуль. Для этого:

pip3.9 install --user pyTelegramBotAPI

Python-консоль сервера платформы <a href="https://api.vc.ru/v2.8/redirect?to=https%3A%2F%2Fwww.pythonanywhere.com%2F&postId=483084" rel="nofollow noreferrer noopener" target="_blank">pythonanywhere</a>
Python-консоль сервера платформы pythonanywhere

*3.9 — поточная версия Python к моменту публикации материала. Учтите, что она может измениться к моменту, когда вы будете читать статью.

4. Стучим в личку бота @BotFather— делаем все по инструкции. Получаем токен доступа. Сохраняем его отдельно.

Процесс присвоения токена боту <a href="https://api.vc.ru/v2.8/redirect?to=https%3A%2F%2Ftelegram.me%2FBotFather&postId=483084" rel="nofollow noreferrer noopener" target="_blank">@BotFather</a>
Процесс присвоения токена боту @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. Кладем скрипт в корень сервера.

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

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

11
7 комментариев

Хороший и подробный материал, попыталась сделать по Вашим данным, но происходит ошибка(

Ответить

Здравствуйте, Рузана!
Вероятнее всего, вы пропустили шаг 3.
Обратите внимание, что инициация команды pip3.9 install --user pyTelegramBotAPI производится через bash-консоль (см. шаг 2).
Только после этого осуществляется переход в Python-консоль (вручную либо нажатием run соответствующего python-файла).
Также обратите внимание, что бесплатная версия pythoneanywhere имеет лимит — 2 консоли.
В случае с примером из гайда будет 1 bash и 1 python.

По-простому:
прочитайте гайд внимательно с самого начала.
Скорее всего, вы не выполнили шаги 2 и 3.

П.С. Если не получится — отпишитесь, постараемся помочь.

Ответить

Добрый вечер! Выполнила все шаги, и такая же проблема, как у Рузаны.

Ответить

Я нашла ошибку, создавая Bash, вставьте pip install pyTelegramBotAPI
он не работал, потому что по ссылке на этой странице ставится старая версия 3.9

Ответить

на пхп нету?

Ответить

аналогичная проблема...

Ответить

не понимаю где находится кнопка RUN

Ответить