Как создать бот-гороскоп в 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