Главное Авторские колонки Вакансии Образование
arrow-right Created with Sketch. Alexander Nrjwolf 5 978 1 В избр. Сохранено
Авторизуйтесь
Вход с паролем

Разработка донат системы для телеграм

Наш бот @DonateTelegramBot является неким аналогом twitch alerts, но для телеги. С его помощью автор канала сможет монетизировать канал без рекламы, а также внести некоторую интерактивность, ведь сообщения пользователей также публикуются на канале.
Мнение автора может не совпадать с мнением редакции

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

Перейдем к технической части. Изначально я начал писать бота на python, но язык это не мой, все было не знакомо и тяжело. После я взял паузу и через месяц начал разрабатывать бота на node.js вместе с другом. Объем работы тут не маленький, поэтому без напарника было бы не обойтись. На сегодняшний момент бот работает с системой "Яндекс.Денги", написан на node.js и для базы данных мы используем MongoDB.

Как все это выглядит :

  1. Автор канала подключает свой канал к боту
  2. Подключает яндекс кошелек, публикует сообщение с ссылкой
  3. Подписчик переходит по ссылке, выбирает сумму доната, пишет сообщение, оплачивает с карточки
  4. Сообщение публикуется на канале
  5. Автор получает деньги, мы забираем 10%.

1. Подключение канала

Здесь все просто и тривиально. Автор канала добавляет нашего бота в администраторы. Важное условие : у бота должны быть выставлены права на постинг, редактирование, удаление сообщений; автор должен быть именно создателем канала. Тут нет ничего сложного, через getChatAdministrators мы можем узнать всю необходимую информацию. После добавления мы получаем возможность публиковать сообщения в нужном канале.

2. Подключение кошелька

Тут уже возникало немало сложностей, но в основном связанных с нашим незнанием и опытом в таких делах. Благо нам давали подсказки ребята, которые написали бота для пересыпания денег с кошелька на кошелек через Яндекс деньги @YandexWalletBot. Мы сталкивались с тем, что не знали, как связать id пользователя и его токеном. Оказалось, что нужно просто правильно составить url. Собственно на этом этапе, мы получаем токен для взаимодействия с кошельком. Зачем нам с ним взаимодействовать? Изначально мы делали систему комиссии по-другому, но об этом позже. Во-первых банально показать пользователю его баланс, во-вторых пользователь удостоверится, что он указал правильных кошелек, в-третьих нам нужно проверять статус кошелька, так как пересылать деньги между анонимными кошельками нельзя. На этом этапе мы сохраняем полученный токен в зашифрованном виде в базе данных, и разрешаем автору начать получать донаты.

3. Получение доната

Здесь есть два пути : deep linking или просто вбить название канала в соответствующем пункте. Наиболее интересно использовать deep linking - это позволяет создать кнопку с url, которая будет вести вас к боту и при нажатии старт бот сразу поймет от кого вы пришли и кому собираетесь донатить.К примеру вот ссылка на тестовый канал с донатом в 1 рубль :

https://t.me/DonateTelegramBot?start=mygreatchannelДальше пользователь вводит желаемый текст, сумму и получает ссылку на оплату.

4. Публикация сообщения

Уже сформированный текст публикуется в канал, показывается имя ( при желании ), сумма и текст сообщения.

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

5. Получение комиссии

Самый интересный момент - монетизация, в нашем случае комиссия за каждый перевод. На данный момент мы берем 10%. Собственно первый наш косяк был связан с тем, что мы решили сначала присылать деньги автору, затем с него уже снимать 10%. Выглядело это дико в коде, а также юзер вылуплял глаза увидев какие права он дает нашему боту, по сути, мы могли бы спокойно списывать деньги с пользователя. В защиту этой идеи могу сказать, что мы не несем риски за чужие деньги, из этого выходит, что мы лишь забираем процент после получения денег.В коде мы проверяли базу данных, смотрели кто нам задолжал и отсеивали в истории платежей пользователей, платежи, по которым мы уже взяли комиссию. В общем все очень печально.После первой реакции людей на тестировании, систему срочно пришлось менять. Сейчас все гораздо проще - нам приходят деньги, мы сразу отправляем 90% в пункт конечного назначения. Для этого, мы в сообщении получателю указываем некоторые параметры, по которым уже находим в какой кошелек нам присылать. То есть донатер не узнает кошелек автора, только наш.

Что дальше?

У нас еще куча не реализованных фич. Мы опираемся на фидбек авторов каналов, пытаемся учесть все, чтобы канал не превратился в свалку донатов, чтобы обе стороны были довольны.

Сайт : http://donate.tgbot.pro

Бот : @DonateTelegramBot

Лс : @nrjwolf

+2
В избр. Сохранено
Авторизуйтесь
Вход с паролем