Всем привет, я решила написать бота для своего телеграмм канала, с помощью которого пользователи смогут предлагать новости, а эти новости будут пересылаться мне:
1. Пользователь нажимает на одну из четырех кнопок:
bot.on(«message», (msg) => < const < id >= msg.chat; bot.sendMessage( id, «Привет, » + msg.from.first_name + «. Я бот для предложки новостей», options ); >); var options = < reply_markup: < inline_keyboard: [ [< text: «Предложить новость 1», callback_data: «news1» >], [< text: «Предложить новость 2», callback_data: «news2» >], ], >, >;
2. В зависимости от нажатой кнопки пользователь получает ответ:
bot.on(«callback_query», function onCallbackQuery(callbackQuery) < const action = callbackQuery.data; const msg = callbackQuery.message; const opts = < chat_id: msg.chat.id, message_id: msg.message_id, >; let text; if (action === «news1») < text = «Вы можете написать ваш вопрос который касается страны»; >if (action === «news2») < text = «Вы можете написать ваш вопрос который касается города»; >> bot.editMessageText(text, opts); >);
И после этого я застряла и не могу найти решение для свои дальнейших идей:
СОЗДАЛ ПРЕДЛОЖКУ В ТЕЛЕГРАМЕ
1. Вместе с ответом бота (text) я хочу чтобы была кнопка «Назад», которая бы возвращала к первому пункту (выбора какого рода новость предложить).
2. После того как пользователь напишет новость, я хочу чтобы ему показывало сообщение, о том что эта новость будет опубликована. А сам текст новости пересылался мне.
Я буду благодарна за советы или ссылки на ресурсы где решена подобная проблема.
- Вопрос задан более двух лет назад
- 989 просмотров
Источник: qna.habr.com
Report-Bot — Предложка для Telegram [Часть 3]
В третьей части по написанию Telegram-ботов реализуем так называемую предложку. По сути это будет некий репорт-бот, который будет получать обращения/сообщения/новости/репорты от пользователей и отправлять админу. То бишь пользователь вводит команду /start -> бот предлагает ввести сообщение -> пользователь вводит сообщение -> сообщение отправляется админу.
Для сегодняшних задач обновил библиотеку и добавил класс-хранилище. Принцип его работы похож на тот, что я описывал в статье по ВК-боту. Но всё же чутка отличается.
Итак, первым делом необходимо подготовить бота на стороне телеграма. Подробная инструкция есть в этой статье. Далее в папку с проектом добавляем обновлённую версию библиотеки. Её можно скачать сразу. В конце урока также будет полный архив с исходниками.
Далее создаём php-файл, в котором будем писать бота (bot.php) и сразу же подключаем библиотеку:
Как сделать бота обратной связи в телеграм – LivegramBot
В константу REPORT_CHAT_ID нужно вписать айди чата, в который бот будет скидывать все сообщения юзеров. Я для этих целей буду юзать свою личку.
const REPORT_CHAT_ID = »; // ID чата, в который будут приходить репорты
Создаём экземпляр класса Bot, попутно инициализируя $chat_id и $message:
$tg = telekotBot::create( ‘токен’ ) // Создаём экземпляр класса Bot, передаём в метод create() токен бота ->initChatId( $chat_id ) // Инициализируем айди чата, из которого поступают боту сообщения (например, это может быть айди пользователя, написавшего боту) ->initMessage( $message ); // Инициализируем текст сообщения, которе было отправлено боту
И создаём экземпляр класса Storage, передавая в метод start() экземпляр класса Bot (он у нас записан в переменную $tg):
$ctx = telekotStorage::start( $tg ); // Создаём экземпляр класса Storage для работы с хранилищем
Поскольку репорт можно будет написать после введения команды /start — добавляем соответствующее условие в код:
if ( $message == ‘/start’ ) < // Тут продолжим писать код >
В связи с тем, что отправка репорта осуществляется в два этапа (1 — ввод команды /start, 2 — отправка репорта) — нужно записать статус диалога с написавшим боту пользователем в кэш, а также дать юзеру дальнейшие инструкции:
$ctx->ctx(); // Создаём файл в кэше и ставим статус диалога в положение 1 $tg->reply( ‘Привет, напиши своё репорт/новость/обращение в следующем сообщении’ ); // Отправляем мессаг юзеру
Метод ctx() создаёт в папке cache новый файл (формата *user_id*.php) и устанавливает статус 1 в сгенерированном массиве.
Значения из кэша можно извлекать методом get() по ключу (в нашем случае ключ — ‘status’). Поэтому в блоке elseif проверяем, писал ли уже этот пользователь боту или нет. Если статус равен единице — значит писал, в противном случае условие не выполняется.
else if ( $ctx->get( ‘status’ ) == 1 ) < // Тут продолжим >
Больше никаких данных пользователь вводить не будет, а значит из хранилища запись можно удалять. Делаем это, используя метод delete():
$ctx->delete(); // Удаляем запись из кэша
Ну, и осталось отослать репорт админу и уведомить юзера об успешной отправке:
- 5id15
- 23.08.2022
- 4 755
- 1
- 29
Источник: kotoff.net
Создаем бот для сбора контента от подписчиков канала
Как создать бот для сбора контента от подписчиков — рассказываю в сегодняшней статье. Разберу пошагово простой и доступный способ. Многие каналы собирают контент от подписчиков (новости, гифки, картинки, видео и пр.), а потом выкладывают лучшее в ленте своего сообщества. Например, известный канал Mash.
Для этого создаются специальные боты. Туда подписчики присылают свой контент.
Создать такой бот вполне возможно каждому на базе бесплатного конструктора умных чат-ботов Fleep.
С помощью конструктора Fleep — возможно создавать боты для отложенных постов и умных чат-ботов под разные цели и задачи. Например для продажи товаров и услуг, создания современной тех. поддержки, сбора базы пользователей и проведения точечных рассылок.
Создаем бот для сбора контента
У официального бота присутствует галка подтверждения (осторожно, существуют фейки).
2. После запуска бота, он выдает нам пост с возможными командами.
3. Вводим команду /newbot и получаем сообщение «Введите имя бота».
Даем ему имя, например «Контент бот».
4. Название дано, выбираем юзернейм (на окончании обязательно должно быть слово «bot», о чем нас и предупреждают). Например, «livecontent_bot». Если бот ругается, значит юзернейм занят и следует попробовать другой.
Бот готов, получаем поздравления и токен бота.
Оформляем аватар и описание бота
1. Используем команду /setuserpic, затем выбираем созданного бота и отправляем фото.
2. Аватарка сделана, добавим описание. Есть две команды: /setdescription и /setabouttext. Команда /setabouttext дает описание бота в шапке. Команда /setdescription дает описание бота при старте. Сначала вводим /setabouttext и отправляем текст для описания бота в шапке.
3. Отлично, описание бота добавлено. Выглядит оно вот так.
4. Командой /setdescription добавляем описание бота при старте.
Выглядит оно вот так.
Бот готов к работе.
Подключаем бот к Fleep
2. Нажимаем на кнопку «Fleep.бизнес» внизу (/business), чтобы создать и настроить бота.
4. Бот подключен к конструктору. Пора настроить приветственное сообщение. По умолчанию оно такое: « Напишите свой вопрос и вам ответят в ближайшее время».
Так как необходимо принимать контент через бота от подписчиков, введем подходящий текст. Например, такой: « Отправляйте сюда ваши фото, видео или гиф. Лучшее мы опубликуем на канале». Для этого переходим в созданный бот, нажимаем кнопку «Приветствие» и вводим новое стартовое сообщение.
Все, готово!
Я показал самый простой пример создания бота, Но при желании на базе конструкторов Fleep вы можете создать практически универсальные боты под разные нужды. Подробнее о возможностях конструктора читаем здесь .
Проверяем работоспособность бота
Проверим бот и посмотрим, возможно ли через него получать контент от подписчиков.
1. Итак, я запускаю созданный бот на втором аккаунте Телеграм. Сначала нахожу его в поиске и нажимаю кнопку «Старт». Вот он.
Отправляю боту контент (изображение).
Получаю изображение в боте на первом аккаунте.
Что это дает? Возможно разместить созданный бот в шапке канала и получать через него контент от подписчиков (гифки, фото, видео и пр.) Удобно как для подписчиков, так и для админов и полностью бесплатно.
Подключаем бот к чату
А что если подключить бот к чату и получать в нем контент от подписчиков? Возможно? Вполне.
1. Создаем чат и называем его, например, «Контент»
2. Добавляем созданного бота в него с правами администратора.
3. Проверяем работоспособность. Для этого я снова отправляю контент (изображение) в бота со своего второго аккаунта.
И получаю его уже в чате (в том, где бот подключен).
Заключение
Создать свой бот для сбора контента от подписчиков не так уж и сложно. Достаточно использовать представленную в статье инструкцию.
Надеюсь, статья была для вас полезной. Всегда рад видеть ваши комментарии. Подписывайтесь на канал для админов в Телеграм и рассылку, делитесь статьей.
Успехов вам! До новых встреч в следующих статьях. С уважением, Дмитрий Толстой.
Источник: blogger-tolstoy.ru