Собираем бота на платформе JAICP
Создаём аккаунт
Читаем документацию
Если сложно просим советов тут
Загрузка и раздача видео в ботах
Способ 1, через загрузку на сервер ТГ
Использовать код в том токене, в котором планируешь раздачу видео, иначе не работает
theme: /
state: Start
q!: $regex</start>
a: Начнём.
state: fileEvent
event!: fileEvent
event!: telegramAnyMessage
event!: telegramApiRequestFailed
a: Привет {{$request.rawRequest.message.video.file_id}}
Загружает файлы маленького и большого размера
Минусы подхода
Долгая загрузка файла у пользователя
Отсутствие статистики
Плюсы
Халявное хранение
Блокировка возможности сохранить и переслать (Protect_content)
Способ 2, через Vimeo (платный тариф можно заменить на YouTube)
Минусы подхода
Платный
Иностранный
Плюсы
Быстрая загрузка у пользователя
Небольшая статистика
Защита от скачивания
Способ 3, через Vimeo + Тильда (можно любой конструктор сайтов)
Минусы подхода
Платный
Трудозатратный
Плюсы
Повышает индексацию материнского сайта
Очень гибкая статистика
Защита от скачивания
Размещаю видео на Vimeo ( фишка в том, что можно после видео возвращать по кнопке в нужный стейт (бонусный модуль https://t.me/{какой то бот}?start=bonus2244 (надеюсь идея ясна)
Встраиваем видео на сайт - беру блок Т123 и ставлю код для встраивания из Vimeo
👇Ссылка на то, что получилось
This link can't be embedded.
Подключаем яндекс метрику, гугл аналитику и тд
даём пользователю из бота ссылку с utm метками в utm метке указываем user_Id
Оплата в ТГ
Тестовый токен Юкасса
В ТГ находим @BotFather
Вводим команду /mybots и выбираем нужного бота
Жмякаем на кнопку Payments
Жмякаем на Юкассу
Жмякаем на Тест
Далее по инструкции получаем токен
Код оплаты и выдачи контента с utm метками
Пишем код в main.sc
require: slotfilling/slotFilling.sc
module = sys.zb-common
require: functions.js
theme: /
state: Start
q!: $regex</start>
# запоминаем user id для utm метки
script:
$client.user_id = $request.rawRequest.message.from.id;
a: Напиши 1 для оплаты
state: Hello
q!: 1
# отправляем метод sendInvoice
script:
var id = $request.rawRequest.message.chat.id;
$temp.response = postData(id);
state: Precheckout
event: telegramPrecheckoutEvent
# отправляем метод answerPreCheckoutQuery
script:
var id = $request.query;
$temp.response = postData2(id);
state: PaymentFailed
event: telegramPaymentFailedEvent
a: Возникли неполадки. Пожалуйста, напишите нам, куда-то.
state: PaymentSuccessful
event: telegramPaymentSuccessEvent
# при успешной оплате формируем ссылку на контент с utm меткой и делаем ссылку короткой, так мы можем посмотреть сколько юзер был на страничке с видео
script:
$temp.url = "https://intensive-online.ru/perenos01?utm_source=bot&utm_medium=" + $client.user_id
var utm_url = $temp.url
$temp.response = GetUrl(utm_url)
a: Оплата прошла успешно. \nВам открыт доосуп \nЛекция 1 - {{$temp.response}}
state: CatchAll
event: noMatch
a: Платеж не прошел. Проверьте, пожалуйста, правильность введенных данных и повторите попытку.
state: Bye
intent!: /пока
a: Пока пока
state: NoMatch
event!: noMatch
a: Я не понял. Вы сказали: {{$request.query}}
Пишем код в functions.js
function postData(id) {
var url = "https://api.telegram.org/bot2050539171:AAGt-GpY8_bG0xwI1qe5QUH8Y7d_aF11yY4/sendInvoice";
var options = {
dataType: "json",
body: {
"chat_id":id,
"title": "Тариф профи",
"description": "Тестовый платеж в тестовом боте для проверки",
"payload":{},
"provider_token":"381764678:TEST:36029",
"currency": "RUB",
"start_parameter":"mybot",
"photo_url":"https://447906.selcdn.ru/Tc/photo_2022-04-16%2017.55.06.jpeg",
"prices":[{"label":"руб","amount": 10000}],
"need_phone_number": true
}
};
var response = $http.post(url, options);
return response.isOk ? response.data : false;
}
function postData2(id) {
var url = "https://api.telegram.org/bot2050539171:AAGt-GpY8_bG0xwI1qe5QUH8Y7d_aF11yY4/answerPreCheckoutQuery";
var options = {