Пример бота магазина в Телеграм

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

Бота я реализовал с помощью фреймворка telegraf.js для node.js. Бот называется UKRentBot доступен для всех желающих. Исходный код находится на GitHub по ссылке https://github.com/VeXell/UKRentHomeHunter. В этой статье я хотел бы рассказать как создавался этот бот и как по аналогии можно создавать других ботов.

Telegram предоставляет прекрасное api которое позволяет создавать ботов с разным функционалом. К этому api уже написано множество разных фреймфорков которые позволяют с ним взаимодействовать и упрощают работу. Я взял telegraf.js из-за того, что он один из самых популярных, имеет поддержку Typescript и постоянно обновляется под новое api Telegram. В качестве базы данных я решил попробовать использовать Google Firebase Database которая отлично подходит для создания MVP проектов или небольших приложений как у меня. Она доступна из коробки и не требует какой-то установки на собственный сервер.

Как создать магазин в Telegram. Чат-бот с приёмом платежей. Доставка еды.

Прежде всего, перед созданием бота, необходимо обратится к BotFather боту https://t.me/botfather который отвечает за создание новых ботов. После заполнения минимального количества полей вам будет доступен api ключ для выполнения запросов к Telegram api.

Теперь можно приступить к разработке. Ниже представлен листинг файла инициализации бота и подключение библиотеки локализации.

import ‘./env’; import from ‘telegraf’; import TelegrafI18n from ‘telegraf-i18n’; import from ‘types’; // Read ENV variables import from ‘config’; import enLocale from ‘./locales/en’; import ruLocale from ‘./locales/ru’; import from ‘actions’; import from ‘wizards’; import from ‘jobs’; import from ‘services/db’; initDatabase(FIREBASE_AUTH, DATABASE); const i18n = new TelegrafI18n(< defaultLanguage: ‘en’, allowMissing: true, useSession: true, defaultLanguageOnMissing: true, >); i18n.loadLocale(‘en’, enLocale); i18n.loadLocale(‘ru’, ruLocale); const bot = new Telegraf(BOT_TOKEN); bot.use(session()); bot.use(i18n.middleware()); initWizards(bot); initActions(bot); // Start bot bot.launch();

Telegram api поддерживает различные команды, действия и сцены которые можно реализовать как форму с шагами (визарды). Например, в функции initActions я сделал начальную инициализацию всех действий.

export function initActions(bot: Telegraf) < // Две обязательные команды для бота bot.start(actionStart); bot.help(actionHelp); // Быстрое меню bot.settings(async (ctx) =>< await ctx.setMyCommands([ < command: GLOBAL_ACTIONS.search, description: ctx.i18n.t(`actions.$`), >, < command: GLOBAL_ACTIONS.searches, description: ctx.i18n.t(`actions.$`), >, < command: GLOBAL_ACTIONS.share, description: ctx.i18n.t(`actions.$`), >, ]); >); bot.command(GLOBAL_ACTIONS.search, actionSearch); // Остальные команды описаны ниже // Кнопки можно делать указывая RegExp формат // Я использую такие действия для удаления заданного поиска bot.action(new RegExp(`$_(?.*)?$`), actionRemove); >

При команде /start я вывожу основную информацию по боту, а также основные действия с ним.

Основное действие бота происходит в функции actionSearch в которой я запускаю визадр для опроса пользователя какую недвижимость он хочет найти.

export default async function actionSearch(ctx: TelegrafContext) < const message = ctx.i18n.t(«wizardSearch.intro»); const chatId = ctx.from?.id; if (chatId) < // Сохраняем данные в БД updateChat(chatId, < firstName: ctx.from?.first_name || «», lastName: ctx.from?.last_name || «», username: ctx.from?.username || «», language: ctx.from?.language_code || «», >); try < const activeSearches = await getSearches(chatId); ctx.session.activeSearches = activeSearches; if ( activeSearches Object.keys(activeSearches).length >= MAX_SEARCHES ) < // Не больше 3 поисков за раз return ctx.replyWithMarkdown( ctx.i18n.t(«error.maxSearchesReached», < maxSearches: MAX_SEARCHES, >), Markup.inlineKeyboard([ Markup.button.callback(» My Searches», GLOBAL_ACTIONS.searches), ]) ); > else < await ctx.replyWithMarkdown(message, Markup.removeKeyboard()); // Входим в визард return ctx.scene.enter(SEARCH_WIZARD_TYPE); >> catch (error) < console.log(«error»); >> else < return ctx.replyWithMarkdown( ctx.i18n.t(«error.emptyChatId»), Markup.removeKeyboard() ); >>

В визарде я по шагам опрашивают пользователя о недвижимости которую он хочет найти. На каждом шаге входные данные валидируются. Клавиатура мессенджера меняется в зависимости от данных которые спрашиваются у пользователя — это особенно удобно для пользователей мобильных устройств.

Еще по теме:  Долго грузятся фото в Телеграмме на Айфоне

export function initWizards(bot: Telegraf) < // Инициализация сцен const stage = new Scenes.Stage([searchWizard]); // Глобальная команда для отменя визарда поиска stage.action(ACTIONS.CANCEL, (ctx) => < ctx.reply(ctx.i18n.t(«operationCanceled»)); return ctx.scene.leave(); >); stage.command(ACTIONS.CANCEL, (ctx) => < ctx.reply(ctx.i18n.t(«operationCanceled»)); return ctx.scene.leave(); >); bot.use(stage.middleware()); >

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

export default new Scenes.WizardScene( WIZARD_TYPE, async (ctx) => < const chatId = ctx.chat?.id; ctx.scene.session.search = < chatId, >; await ctx.replyWithMarkdown( ctx.i18n.t(«wizardSearch.actions.location») ); return ctx.wizard.next(); >, processLocation, // Other actions. );

В функции processLocation ниже как раз и происходит обработка ввода. Если все прошло успешно, то необходимо вызывать следующую сцену с помощью метода wizard.next() .

export default async function processLocation(ctx: TelegrafContext) < try < if ( !ctx.message || !(«text» in ctx.message) || ctx.message.text.length try < const location = await detectLocation(ctx.message.text); ctx.scene.session.search.area = location.locationName; ctx.scene.session.search.searchAreaId = location.locationId; >catch (error) <> if (!ctx.scene.session.search.area) < throw new NoLocationFoundError( ctx.i18n.t(«wizardSearch.errors.locationNotFound») ); >let locationAlreadyInSearch = false; if (ctx.session.activeSearches) < const searches = ctx.session.activeSearches; Object.keys(searches).forEach((key) => < const searchObject = searches[key]; if ( searchObject.searchAreaId === ctx.scene.session.search.searchAreaId ) < locationAlreadyInSearch = true; >>); > if (locationAlreadyInSearch) < throw new LocationAlreadyInSearchError( ctx.i18n.t(«wizardSearch.errors.locationAlreadyInSearch», < location: ctx.scene.session.search.area, >) ); > // После все валидации данных переходим на след шаг. await askForDistance(ctx); return ctx.wizard.next(); > catch (error) < return cancelSearchReply(ctx, error.message); >>

Ниже показан результат визарда бота. Пользователь в любой момент может отменить поиск с помощью команды /cancel

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

export function saveSearch( searchRequest: ISearchRequestInput ): Promise < const searchesListRef = getDB().ref(`$/$`); const searchRef = searchesListRef.push(); return searchRef.set(< . searchRequest, . < createdAt: moment.utc().format(), expiredAt: moment.utc().add(30, «days»).format(), lastSearchAt: null, >, >); > export async function getSearches( chatId: number ): Promise < const searchesList = await getDB().ref(`$/$`).get(); if (searchesList.exists()) < return searchesList.toJSON() as ISearchRecords; >return null; > export async function removeSearch( chatId: number, index: string ): Promise < await getDB().ref(`$/$/$`).remove(); return true; > type IUpdateSearchRecord = Partial; export function updateSearch( chatId: number, index: string, search: IUpdateSearchRecord ) < return getDB().ref(`$/$/$`).update(search); >

При работе с Firebase приходится отходить немного от мышления сохранения данных в SQL формате, да и сама Firebase имеет свои особенности с её работой. В итоге структура моей базы данных получилось как на изображении ниже.

Теперь бот будет каждые 4 часа опрашивать сайт с публикуемый недвижимостью и как только найдет новые объявления, то тут же пришлет сообщения пользователю. Так из коробки мы получаем еще и поддержку нотификаций и отправку изображений с группировкой mediaGroup , и кнопки для быстрого доступа, чтобы открыть сразу объявление.

Очень здорово, что Firebase позволяет подписываться на изменение структуры вместо постоянных опросов БД. Делается достаточно просто. Теперь как только изменятся данные по указанному пути, они автоматически загрузятся в бота.

function getAllSearchesRef() < return getDB().ref(`$`); > let searches: ISearchEntries | null = null; getAllSearchesRef().on(«value», (snapshot) => < if (snapshot.exists()) < searches = snapshot.val(); >>);

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

function formatTgMessage( area: string, searchResult: ISearchResult ): < media: < type: «photo»; media: string; caption?: string >[]; text: string; > < const images = Array.isArray(searchResult.images) ? searchResult.images : []; return < media: images.map((imageUrl) =>< return < type: «photo», media: imageUrl, >; >), text: ` $ / *$* Available from *$* *$* Search in $`, >; > const message = formatTgMessage(area, searchResult); const media = message.media.slice(0, 10); let submitted = false; try < if (media.length) < await telegramBot.telegram.sendMediaGroup(chatId, media); >await telegramBot.telegram.sendMessage(chatId, message.text, < parse_mode: «Markdown», reply_markup: < inline_keyboard: [[Markup.button.url(«↗️ Open», searchResult.openUrl)]], >, >); submitted = true; > catch (error) < if (error.response?.error_code === 400) < // Чат не найден >if (error.response?.error_code === 403) < // Чат был заблокирован. Удаляем поиск await removeSearch(chatId, searchId); await removeSearchResults(chatId, searchId); >break; >

Еще по теме:  Как создать два Телеграмма на один номер

Результат работы бота можно посмотреть на изображении снизу

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

Как я писал выше — исходный код бота доступен по ссылке https://github.com/VeXell/UKRentHomeHunter и вы можете использовать мой пример для написания своих ботов. Если вам понравился мой бот — поставьте мне звезду на GitHub.

О Блоге

Авторский блог Вячеслава Волкова. Большая часть моих статей нацелены на веб-разработку, но также вы найдете тут и другую, возможно, полезную вам информацию.

Источник: vexell.ru

Telegram боты

Telegram боты

Бот не поощряет заработок, подписки не предусмотрены.

CONFF.ORG

Telegram боты

Небольшой бот анонимного чата с помощью которого можно

CONFF.ORG

Telegram боты

С помощью данного бота, можно проводить сделки при

CONFF.ORG

Telegram боты

Ещё один магазинчик для телеграм с широким функционалом

CONFF.ORG

Telegram боты

supportbot — один из немногих ботов для телеграм, который

CONFF.ORG

Telegram боты

Бот для проверки того, является ли новый пользователь

CONFF.ORG

Telegram боты

Бот написан полностью нуля наpython 3.9с помощью библиотеки Aiogram.

CONFF.ORG

Telegram боты

Предоставляю вам ознакомиться с небольшим телеграм-ботом

CONFF.ORG

Telegram боты

Смайликовая CAPTCHA – это инновационный подход к защите

CONFF.ORG

Telegram боты

Позволяет пользователям отправлять сообщения друг другу

Источник: conff.org

Как подключить и настроить оплату через Telegram-бота

В шапке реббит

Как подключить и настроить оплату через Telegram-бота

Сегодня оплата через Телеграм-бота — это возможность не просто поднять объёмы продаж, а выйти на новую целевую аудиторию, так как в 2023 году число пользователей мессенджера достигло 700 млн. человек. Покупателю удобнее сделать покупку и оплату прямо в чате, поэтому прием платежей в Телеграм-боте позволяет монетизировать подписчиков групп и пабликов, почти не выходя из TG. Это укорачивает путь клиента к покупке, следовательно, повышает конверсию.

Единственный форум по арбитражу трафика в РФ. Получи скидку 10% по промокоду «Afftimes»
Содержание скрыть

Как создать бота в Телеграм для приема оплаты?

Перед тем, как создать бота, необходимо получить токен управления им. Делается это в bofather через команды /start и /newbot. Как сделать бота для оплаты в Telegram: настройка приема платежей Как подключить и настроить оплату через Telegram-ботаПолучив токен, вы можете приступить к разработке бота на конструкторе или через программирование.

Конструкторы ботов для приема платежей в Телеграм

В Телеграм много конструкторов и сервисов по созданию ботов. Но лишь в немногие из них интегрированы платежные системы. Botmother. Популярный инструмент, через который создают ботов не только в ТГ, но и в других мессенджерах и социальных сетях. Botmother работает с платёжками PayOnline, Robokassa, bePaid, VKPay, ЮKassa и платежи в Telegram. Есть бесплатный тариф для работы с максимум 10 ботами и есть платные тарифы от 2900 до 11000 рублей в месяц. Sambot. Это конструктор широкого назначения, с помощью которого создают боты модерации, опросники, игровые, справочные и магазины в Телеграм. В него интегрированы платёжки QIWI, ЮMoney, Robokassa, ЮKassa, Prodamus, ТинькоффБанк. Тарифы от 500 рублей в месяц до 12600 рублей в год. BotKits. Предназначен для коммерческих ботов — магазины в ТГ, выбор и покупка еды с доставкой, подбор депозита/кредита и другие средства взаимодействия с клиентами. Принимает оплату через ЮMoney, QIWI, терминалы оплаты и с международных банковских карт. Тарифы от 2000 до 7700 рублей в месяц. BotTap. С его помощью создают ботов не только в TG, но и в Viber, Facebook и VK. Интегрирован с платёжками QIWI, ЮMoney, ЮКасса, YClients и Енот. Тарифы от 100 до 1200 рублей в месяц. PuzzleBot. Конструктор для создания ботов автоматических ответов, модерации, магазинов, автопостинга и для других типовых задач. К нему подключают платёжки ЮMoney, QIWI, Енот, а также Cryptobot и Minter для платежей в криптовалюте. Юрлицам доступны также ЮКасса, Robokassa, Cloudpayments, Prodamus и ещё пара десятков платёжек. Есть бесплатный тариф и платные от 550 до 1600 рублей в месяц. B4S — Bot4shop. Это конструктор для создания ботов-магазинов. Заточен под витрины продаж в Телеграм. К нему подключаются платёжки Tranzzo, LiqPay, Portmone, Cascad, Paymega, LeoGaming, Stripe, а также Apple и Google Pay. Тарифы 25$ в месяц или 120$ в год.

Еще по теме:  Как работать с выпадающим списком в Google таблицах через Телеграм бота

Пример кода на Python для приема оплаты в Телеграм-боте

Как подключить оплату в Телеграм-бота

Независимо от того, работаете ли вы на конструкторе или в Питоне, вы отправляете в Botfather команду /mybots, чтобы перейти к управлению ботами.

Как подключить оплату в самописном боте?

Этот способ подходит для ботов, которые вы написали самостоятельно или создали на конструкторах без API платёжных систем. После команды /mybots выбираем бот и жмём на кнопку Payments (платежи), а затем выбираем систему оплаты. Как подключить и настроить оплату через Telegram-бота

Как подключить и настроить оплату через Telegram-ботаВ нашем случае выберем платёжку Paymaster и чтобы её подключить, жмём на “Connect Paymaster Live”. В результате нас перебрасывает на PayMaster Bot. Как подключить и настроить оплату через Telegram-бота Как подключить и настроить оплату через Telegram-ботаЗапускаем бот и указываем идентификатор своего сайта в системе Paymaster. Как подключить и настроить оплату через Telegram-бота Как подключить и настроить оплату через Telegram-ботаВ результате в BotFather получаем “боевой” платёжный токен, который и будем использовать в своих ботах для привязки платёжной системы PayMaster. Кроме этой платёжки в BotFather есть множество других платежных систем: Robokassa, ECOMMPAY, Click.uz, Stripe, Liqpay и другие. Главное, чтобы у вас был аккаунт в этих системах, привязанный сайт и карта, кошелёк, либо счёт, куда вы будете выводить деньги. Привязка их к своему BotFather происходит аналогичным образом. Статья по теме: Полезные боты для СММ.

Как подключить оплату в конструкторе?

  • Создаём аккаунт на платформе и авторизуемся через её бот;
  • Получаем токен в BotFather и отправляем его в Puzzlebot.

Теперь бот привязан к конструктору и им можно управлять. В конструкторе переходим в меню “Настройки”, а затем “Платёжные системы”.

Как подключить и настроить оплату через Telegram-бота

Далее нужно создать магазин с товарами и услугами. Например, добавим несколько товаров в Puzzlebot.

Как подключить и настроить оплату через Telegram-бота

Затем настраиваем цены и сценарии оплаты.

Как подключить и настроить оплату через Telegram-бота

Теперь можно запустить бот и попробовать купить один из товаров.

Как подключить и настроить оплату через Telegram-бота Как подключить и настроить оплату через Telegram-бота

Система после нажатия на кнопку оплаты сгенерирует уникальную ссылку и перебросит пользователя на страницу, где он введёт данные своей карты и произведёт платёж. Платежи также принимаются с Apple Pay и Google Pay. Владелец аккаунта Paymaster выводит их на свою карту либо счёт в банке.

FAQ

Какие платежные системы работают в Телеграме?

В мессенджере Дурова предусмотрены Global Pay, Paycom, Click.Uz, Freedom Pay, Stripe, ЮKassa, Сбербанк, Tranzzo, LiqPay, ECOMMPAY, PayMaster, Cascad, Paymega, Portmone, ПСБ, LeoGaming, Bank 131, Unlimint, iPay88, Robokassa, Paykassma, PayBox.money, bill_line, Redsys, Chapa. В основном они предназначены для оплаты с международных и национальных банковских карт в долларах, евро и местных валютах.

Что такое Telegram Payments?

Это платёжные системы, которые встроены в GodFather и которые можно подключить к боту для приёма платежей онлайн через Телеграм. Они принимают оплату онлайн через Mastercard, Visa, Maestro, Unionpay, МИР, а также местные карты.

Можно ли принимать платежи в Телеграм без ИП?

Все платёжные системы Телеграм — ЮKassa, Robokassa, Click.Uz и другие требуют заключить договор и оформить юридическое лицо для приёма платежей. Даже если подключать платёжные сервисы внутри конструкторов, ИП всё равно требуется, так как платформа у вас потребует подключить ваш собственный аккаунт в платёжной системе. Однако в Интернете нетрудно найти сервисы, которые продают рабочие аккаунты этих систем. Покупая такой акк, вы вяжете к нему свою карту и подключаете к телеграм-боту. Другой вариант приёма платежей без ИП — сервисы донатов, наподобие Donate, Tools, Remiling, Asay, Paidsub и множества других. Правда, они позволяют принимать платежи только за цифровые товары.

Как подключить кнопку доната в Телеграме?

Это делается через донаторские сервисы. Официальный сервис донатов в Telegram — Donate. Но кроме него есть Paywal, Admaker, Toolsy, Nemiling, Cashwave и множество других. Инструкции по настройке есть в каждом сервисе. Все они не только позволяют принимать донаты, но и предоставлять платный доступ к файлам, страницами цифровым товарам.

Можно ли подключить Сбербанк к Телеграм-боту?

Да, потому что он есть в списке официальных платёжных систем Telegram и интегрирован в BotFather. Для его подключения нужно открыть аккаунт в онлайн-банкинге Сбербанк, а также оформить юридическое лицо для приёма платежей.

Источник: afftimes.com

Рейтинг
( Пока оценок нет )
Загрузка ...