Как стать автором
Обновить

Комментарии 15

1. Лучше использовать приватный канал для таких дел
2. Зачем прокси через node.js? В простейшем случае можно писать напрямую с сайта в api.telegram.org, «благо» Access-Control-Allow-Origin:*.
1. Наверное лучше использовать канал, да. Я хотел организовать все быстро и чтобы работало.
2. Мое приложение работает на ноде, поэтому решил почему бы не свалить этот процесс на нее.
P.S.
Практика и опыт в решении разных задач — хорошо)
2. Зачем прокси через node.js? В простейшем случае можно писать напрямую с сайта в api.telegram.org, «благо» Access-Control-Allow-Origin:*.

Злобный хацкер спалил в консоли браузера токен и начнёт использовать бота в своих хацкеравских целях.
Каких? Послать рекламу казино в канал для 5 человек? Или вы еще для чего то будете использовать бота? Завести 2х ботов не позволяет религия?
Злобный хацкер например может всякие незаконные анонимные действия совершать(продажа оружия, веществ, террор, поддельные документы), а бот зарегистрирован на тебя и если телега прогнется все-таки под государство, то анонимности конец.
deepweb
Возможно можно сформулировать мысль иначе, но смысл думаю понятен
А нахрена? Привязывать сервис продажи к боту, который завтра умрет (перевыпустит ТокенИд)? Потратить кучу времени в раскрутку бота, который даже не твой??? не, это не так делается.

2, т.е. вы предлагаете использовать токен от бота в фронте?

А в чем преимущество канала?
В обычном чате с ботом можно добавить какую-то функциональность к сообщениям. Ответить там, или переслать или сохранить где-то. Зачем в данном случае нужен канал?
Канал тоже позволяет сохранить или переслать куда-то. Притом имя бота не будет светиться в канале в отличии от чата, т.е. пересылать с закрытого канала более секьюрно.
Сама суть в том, что на канал можно не мьютить, в отличии от чата, в котором постоянно будут возникать флуды не по делу, что в конце концов заставит вас замьютить чат и пропустить важное сообщение.
Ну и токен бота, который постит в канал можно распечатать хоть на заборе, читать из канала чужие сообщения он не сможет, посмотреть кто подписан на канал — тоже.
Отправить и очистить следует сменить местами и разукрасить в разный цвет. Я, смотря на гифку, мысленно представил как каждый раз жму очистить вместо отправить X)
Проверить как правильно делается можно открыв консоль хрома и ввести confirm(1)
Всё намного проще. На самом деле, сообщение можно отправить прямо из JS на страничке. Не нужен node.js, не нужны запросы на сервер. Просто 20 коротких строк JS.
Понятно, что светить токен бота и чат айди — не кошерно. Однако, знать это всё равно неплохо.
При желании, функцию sendMsg (из этого скрипта) для отправки JSON данных методом POST по такой же схеме можно реализовать на php. Например, через curl.

const TOKEN = xxx; // токен от BotFather
const CHAT_ID = yyy; // chat_id для телеграм

var form = document.querySelector('.form'); // находим в DOM нашу лид-форму
form.addEventListener("submit", function (e) { // прослушиваем форму
    e.preventDefault(); // перехватываем стандартный ответ
    data = new FormData(this); // вместо serialize на jQuery
    sendMsg(data); // передаём данные из формы на отправку
})

function sendMsg(data) {
    var url = 'https://api.telegram.org/bot' + TOKEN + '/sendMessage'; // токен бота
    var body = JSON.stringify({ // склеиваем объект в JSON строку
        chat_id: CHAT_ID,
        parse_mode: 'Markdown', // разметка сообщений вкл (чтобы использовать *жирный текст*)
        text: '*Новый лид*\n' + data.get("title") + '\n\n*Имя:* ' + data.get("name") + '\n*Телефон:* ' + data.get("phone") + '\n*Откуда:* [' + window.location.href + '](' + window.location.href + ')'
    });
    var xhr = new XMLHttpRequest(); // инициализируем AJAX запрос
    xhr.open('POST', url, true); // отправляем наше сообщение методом POST на сервак телеги
    xhr.setRequestHeader('Content-type', 'application/json; charset=utf-8'); // на всякий случай, оповестим телеграм, что отправили JSON
    xhr.send(body);
}

Разметка формы:
<form method="post" class="form">
    <input type="hidden" name="title" value="Есть вопросы?" />
    <input type="text" name="phone" placeholder="Телефон (+7 ...)"/>
    <input type="text" name="name" placeholder="Имя" />
    <button>БЕСПЛАТНАЯ КОНСУЛЬТАЦИЯ</button>
</form>
Отдавать токен бота всем — наверное, не лучшая идея
Угу, ничего сложного.
Делал чат для сайта с использованием телеграма.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Изменить настройки темы

Истории