Telegram-бот для поиска по сайту на WordPress

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

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

Что мы получим? Получим бота ( t.me/GdeSnimali_bot ), который умеет искать по сайту и присылает пользователю ссылку на статью или набор ссылок на статьи. В названии я написал Wordpress, но по идее любой сайт. который поддерживает RestApi. Показывать буду на примере своего сайта, для которого это делал (Сочтите за рекламу, ибо не зря же я статью писал - сходите и зацените сайтик). Итак есть контентный сайт gdesnimali.ru, сайт на wordpress и каждый пост там - это описание локаций того или иного фильма. Искать мы будем только по названию фильма, а оно указано в заголовке, поэтому интересует поиск только по заголовку. Мы ожидаем, что в бота человек напишет название фильма, а в ответ хочет получить все что найдет поисковик на сайте.

Пример работы чат-бота. 

Создание бота в телеграм

Идем по ссылке t.me/BotFather - это чат бот для создания ботов. Там пишем /newbot, он попросит выбрать нас название для своего бота, обязательное требование, чтобы название заканчивалось на _bot, поэтому у меня gdesnimali_bot

Если название подошло, то нам покажется сообщение где будет токен, он то нам и нужен. Выглядит это примерно так:

Use this token to access the HTTP API:
5133698220:AAHqiEwVzn0lH2nrwqntlHNmYeQecGL0x

Знайте, любой кто получит этот токен сможет управлять ботом, поэтому никому его не показывайте.

Но не спешите уходить из бота, он знает еще две нужные нам команды:

/setuserpic - отправляйте команду и следом картинуку, которая будет аватаркой бота.

/setdescription - отправляйте команду и следом описание вашего бота, которое будет высвечиваться пользователю до нажатия кнопки старт. Тут важно емко и интересно описать, что бот делает, чтобы пользователь не удалил его сразу.

Адаптируем код

Итак, я не программист, поэтому кто-то может поймать депрессию от моего кода, но главное - он работает. Код просто копируем и правим пару мест

import telebot import requests from telebot import types bot = telebot.TeleBot('ВОТ ТУТ НУЖНО ВСТАВИТЬ КОД ОТ ТЕЛЕГРАМ') bot.remove_webhook() @bot.message_handler(commands=['start']) def start_message(message): user_id = message.from_user.id pressStartButton = 'Кнопка старт' markup = types.ReplyKeyboardMarkup(resize_keyboard=True) filmSearchButton = types.KeyboardButton('ВОТ ТУТ КНОПКА ДЛЯ СТАРТА ПОИСКА') markup.add (filmSearchButton) bot.send_message(message.chat.id, "ВОТ ТУТ ПРИВЕТСТВЕННОЕ СООБЩЕНИЕ БОТА ПОСЛЕ КНОПКИ СТАРТ", parse_mode='html', reply_markup=markup) @bot.message_handler(content_types=['text']) def lalala (message): if message.chat.type == 'private': if message.text == 'ВОТ ТУТ КНОПКА ДЛЯ СТАРТА ПОИСКА': bot.send_message(message.chat.id, 'ВОТ ТУТ ОПИСАНИЕ ЧТО МОЖНО ИСКАТЬ') else: user_id = message.from_user.id searchQuery = message.text url = f"ВОТ ТУТ АДРЕС ВАШЕГО САЙТА wp-json/wp/v2/posts?search={searchQuery}" responce = requests.get(url) if not responce.json(): bot.send_message(message.chat.id, 'Я ничего не нашел по вашему запросу') for SearchResult in responce.json(): title = SearchResult['title'] completeMessage = f"{title['rendered']} {SearchResult['link']}" bot.send_message(message.chat.id, completeMessage) bot.polling(none_stop=True)

Что нужно в нем поменять?

Где надпись "ВОТ ТУТ НУЖНО ВСТАВИТЬ КОД ОТ ТЕЛЕГРАМ" - нужно вставить код который вы получили в телеграм при создании бота.

Где надпись "ВОТ ТУТ АДРЕС ВАШЕГО САЙТА" - должно получиться вот так, только вначале ваш сайт - f"https://gdesnimali.ru/wp-json/wp/v2/posts?search={searchQuery}"

Где надпись "ВОТ ТУТ КНОПКА ДЛЯ СТАРТА ПОИСКА" (Обратите внимание она в коде два раза, оба раза должно быть одинаково до символа" - нужно написать просто на русском запрос на поиск, у меня написано "Искать фильм" - это кнопка которая будет снизу в меню, при ее нажатии он выведет сообщение "ВОТ ТУТ ОПИСАНИЕ, ЧТО МОЖНО ИСКАТЬ" - у меня это "Введите название фильма".

Готово, теперь вам нужно просто сохранить этот код в файле питон, т.е. он должен заканчиваться на .py, например bot.py проще всего код вставить в обычный блокнот, там поправить и потом нажать "сохранить как" и сразу опубликовать с нужным форматом .py

Запуск на сервере

Бот должен где-то работать и он не может это делать на серверах телеграм.

Для своего бота я использую VPS сервер своего сайта и это было отдельным приключением все там настроить и установить. Вам я предлагаю использовать, как минимум на первое время хостинг pythoneverywhere. Он бесплатный для одного проекта. И есть отличная инструкция как запустить там бота. Я не буду ее переписывать, просто используйте код полуенный выше вместо кода в инструкции.

Спасибо за внимание - надеюсь у вас получится отличный бот!

0
15 комментариев
Написать комментарий...
Valeratal Val

Тоже не понял, нафига. Просто поиск яндекса/гугла/встроенный, (и другие серверные навороты)

Ответить
Развернуть ветку
Igor Batkovich

Я понял для чего это всё))) Для реферской ссылки в статье

Ответить
Развернуть ветку
Igor Batkovich

Это вместо того чтобы повесить виджет "поиск" на сайте?

Ответить
Развернуть ветку
Where Filmed
Автор

Нет, это сделать возможность искать через телеграм, как у флибусты книги качали

Ответить
Развернуть ветку
Valeratal Val

у флибы то сайт заблочен, поэтому это им надо

Ответить
Развернуть ветку
Where Filmed
Автор

У меня это дополнительная возможность, некоторые люди предпочитают такие интерфейсы

Ответить
Развернуть ветку
Valeratal Val

ужас то какой

Ответить
Развернуть ветку
Igor Batkovich

Т.е. я на компьютере серфлю, зашел на сайт. Надо на нем что-то найти. Вытаскиваю телефон, значит, и...

Ответить
Развернуть ветку
Where Filmed
Автор

Нет, на сайте работает поиск. Сценарий тут такой, что если этот вопрос частенько беспокоит, то можно добавить себе бота и к нему быстро обращаться

Ответить
Развернуть ветку
Valeratal Val

Кого-то часто беспокоит вопрос "где снимали фильм" и при этом есть принципиальная разница, где гуглить - на сайте или в телеге?
Вы проводили опрос своей аудитории? Сколько %% пользуются ботом, вместо поиска по сайту?

Ответить
Развернуть ветку
Where Filmed
Автор

С ботом такая ситуация, что гипотезу проверить проще запустив бота, чем проводить опросы, по времени быстрее.

Ответить
Развернуть ветку
Daulet Bekbaganbetov

Братья
как научиться создавать телеграмм боты? есть какие нибудь курсы/книги?

Ответить
Развернуть ветку
Where Filmed
Автор

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

Ответить
Развернуть ветку
Дмитрий Никитин

Где бы в текстовом формате найти годноту?

Ответить
Развернуть ветку
Where Filmed
Автор

На степике есть курс

Ответить
Развернуть ветку

Комментарий удален модератором

Развернуть ветку
12 комментариев
Раскрывать всегда