Как зарегистрироваться в боте в telegram
Перейти к содержимому

Как зарегистрироваться в боте в telegram

  • автор:

Личный кабинет Инфокрафт

Для перехода в telegram-бот необходимо открыть Личный кабинет («Главное» — «Личный кабинет Инфокрафт»), перейти на вкладку «Информация» и нажать на ссылку «Запись через Telegram». Далее есть 2 способа перейти в telegram-бот: 1. Если у Вас запущен Telegram на компьютере, то перейдите по ссылке в пункте 1. 2. Если приложение Telegram установлено на телефоне, то считайте QR-код камерой мобильного телефона или другим приложением для считывания QR-кодов, в результате должна считаться ссылка на telegram-бот.

info_outline

Не передавайте ссылку другим пользователям, т.к. она привязана к Вашей учетной записи

При переходе по ссылке откроется telegram-бот: Для начала работы нажмите кнопку «Старт»: Для пользователей, которые работают с разными организациями, в начале необходимо выбрать организацию, от имени которой будет происходить запись на консультации: После этого станут доступны кнопки:

  • «Заявки» — для просмотра информация по уже созданным заявкам.
  • «Записаться на консультацию» — для создания новых заявок.

Подробнее о том, как записаться на консультацию, см. в инструкции.

Инструкция вам помогла?

Как регистрировать пользователей в телеграм боте на python (aiogram)

Сделал регистрацию путем установки состояний, в которых мы перехватываем ответы пользователя и записываем в переменные, после проработки всех состояний, мы записываем в бд информацию о пользователе. Проблема заключается в том, что если регистрироваться будут одновременно 2 пользователя, то бот может записать в переменные данные, которые вводит другой пользователь. Как я мог бы это исправить? (по необходимости готов приложить код)

class AwaitMessages(StatesGroup): fio_add = State() phone_add = State() @dp.message_handler(state=AwaitMessages.fio_add) async def process_fio_add(message: types.Message, state: FSMContext): user_registration.fio = message.text await state.finish() await client.send_message(message.chat.id, 'Введите телефон: ') await AwaitMessages.phone_add.set() 

Отслеживать
задан 30 июл 2022 в 10:52
49 1 1 серебряный знак 7 7 бронзовых знаков
Сделать полноценную БД?
30 июл 2022 в 14:58

@oleksandrigo — есть бд, но чтобы записать в бд данные, их необходимо собрать в переменные и после все переменные закинуть в запрос. Дело в том, что когда одновременно два пользователя будут регаться, то в переменные запишутся данные одного из двух и в бд сохранится две записи с одними и теми же значениями. Вопрос в том, как собрать данные пользователя конкретно из чата, где происходит регистрация, ибо я так понимаю, обычные переменные не подойдут, тк используются всеми юзерами одновременно

31 июл 2022 в 0:47
Вы используете FSM?
31 июл 2022 в 8:25

@oleksandrigo — да, я тоже думал, что fsm спасет, но похоже, что глобальные переменны нужно заменить на что-то другое, я слышал, что в fsm есть также возможность по ключу куда-то сохранять значения и также по ключу их можно вытащить и записать куда-либо, может это выход?

31 июл 2022 в 12:49
Ага есть такое. Странно что вы юзали FSM и не знали этого. Добавьте код я покажу как исправить
31 июл 2022 в 14:31

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

from aiogram import Bot, Dispatcher, executor, types from aiogram.contrib.fsm_storage.memory import MemoryStorage from aiogram.dispatcher import FSMContext from aiogram.dispatcher.filters.state import StatesGroup, State import config bot = Bot(token=config.BOT_TOKEN) storage = MemoryStorage() dp = Dispatcher(bot, storage=storage) class AwaitMessages(StatesGroup): fio_add = State() phone_add = State() @dp.message_handler(state=AwaitMessages.fio_add) async def process_fio_add(message: types.Message, state: FSMContext): async with state.proxy() as data: data['fio'] = message.text # зачем? # await state.finish() # нет смысла юзать bot.send_message если вы отправляете в этот же чат # await bot.send_message(message.chat.id, 'Введите телефон: ') await message.answer('Введите телефон.') await AwaitMessages.phone_add.set() @dp.message_handler(state=AwaitMessages.phone_add) async def process_fio_add(message: types.Message, state: FSMContext): async with state.proxy() as data: data['phone'] = message.text await message.answer(f'ФИО - \nНомер - ') if __name__ == '__main__': executor.start_polling(dp, skip_updates=True) 

Инструкция: Как создавать ботов в Telegram

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

Прежде всего, бот для Telegram — это по-прежнему приложение, запущенное на вашей стороне и осуществляющее запросы к Telegram Bot API. Причем API довольное простое — бот обращается на определенный URL с параметрами, а Telegram отвечает JSON объектом.

Рассмотрим API на примере создания тривиального бота:

1. Регистрация

Прежде чем начинать разработку, бота необходимо зарегистрировать и получить его уникальный id, являющийся одновременно и токеном. Для этого в Telegram существует специальный бот — BotFather.

Пишем ему /start и получаем список всех его команд.
Первая и главная — /newbot — отправляем ему и бот просит придумать имя нашему новому боту. Единственное ограничение на имя — оно должно оканчиваться на «bot». В случае успеха BotFather возвращает токен бота и ссылку для быстрого добавления бота в контакты, иначе придется поломать голову над именем.

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

Не забудьте проверить полученный токен с помощью ссылки api.telegram.org/bot/getMe, говорят, не всегда работает с первого раза.

2. Программирование

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

Telegram позволяет не делать выгрузку сообщений вручную, а поставить webHook, и тогда они сами будут присылать каждое сообщение. Для Python, чтобы не заморачиваться с cgi и потоками, удобно использовать какой-нибудь реактор, поэтому я для реализации выбрал tornado.web. (для GAE удобно использовать связку Python2+Flask)

URL = "https://api.telegram.org/bot%s/" % BOT_TOKEN MyURL = "https://example.com/hook" api = requests.Session() application = tornado.web.Application([ (r"/", Handler), ]) if __name__ == '__main__': signal.signal(signal.SIGTERM, signal_term_handler) try: set_hook = api.get(URL + "setWebhook?url=%s" % MyURL) if set_hook.status_code != 200: logging.error("Can't set hook: %s. Quit." % set_hook.text) exit(1) application.listen(8888) tornado.ioloop.IOLoop.current().start() except KeyboardInterrupt: signal_term_handler(signal.SIGTERM, None) 

Здесь мы при запуске бота устанавливаем вебхук на наш адрес и отлавливаем сигнал выхода, чтобы вернуть поведение с ручной выгрузкой событий.

Приложение торнадо для обработки запросов принимает класс tornado.web.RequestHandler, в котором и будет логика бота.

class Handler(tornado.web.RequestHandler): def post(self): try: logging.debug("Got request: %s" % self.request.body) update = tornado.escape.json_decode(self.request.body) message = update['message'] text = message.get('text') if text: logging.info("MESSAGE\t%s\t%s" % (message['chat']['id'], text)) if text[0] == '/': command, *arguments = text.split(" ", 1) response = CMD.get(command, not_found)(arguments, message) logging.info("REPLY\t%s\t%s" % (message['chat']['id'], response)) send_reply(response) except Exception as e: logging.warning(str(e)) 

Здесь CMD — словарь доступных команд, а send_reply — функция отправки ответа, которая на вход принимает уже сформированный объект Message.

Собственно, её код довольно прост:

def send_reply(response): if 'text' in response: api.post(URL + "sendMessage", data=response) 

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

3. Команды

Перво-наперво, необходимо соблюсти соглашение Telegram и научить бота двум командам: /start и /help:

def help_message(arguments, message): response = result = ["Hey, %s!" % message["from"].get("first_name"), "\rI can accept only these commands:"] for command in CMD: result.append(command) response['text'] = "\n\t".join(result) return response 

Структура message[‘from’] — это объект типа User, она предоставляет боту информацию как id пользователя, так и его имя. Для ответов же полезнее использовать message[‘chat’][‘id’] — в случае личного общения там будет User, а в случае чата — id чата. В противном случае можно получить ситуацию, когда пользователь пишет в чат, а бот отвечает в личку.

Команда /start без параметров предназначена для вывода информации о боте, а с параметрами — для идентификации. Полезно её использовать для действий, требующих авторизации.

После этого можно добавить какую-нибудь свою команду, например, /base64:

def base64_decode(arguments, message): response = try: response['text'] = b64decode(" ".join(arguments).encode("utf8")) except: response['text'] = "Can't decode it" finally: return response 

Для пользователей мобильного Telegram, будет полезно сказать BotFather, какие команды принимает наш бот:
I: /setcommands
BotFather : Choose a bot to change the list of commands.
I: @******_bot
BotFather: OK. Send me a list of commands for your bot. Please use this format:

command1 — Description
command2 — Another description
I:
whoisyourdaddy — Information about author
base64 — Base64 decode
BotFather: Success! Command list updated. /help

C таким описанием, если пользователь наберет /, Telegram услужливо покажет список всех доступных команд.

4. Свобода

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

UPD: Как верно подсказали, такое пройдет только при личном общении. В чатах боту доставляются только сообщения, начинающиеся с команды (/) (https://core.telegram.org/bots#privacy-mode)

  • All messages that start with a slash ‘/’ (see Commands above)
  • Messages that mention the bot by username
  • Replies to the bot’s own messages
  • Service messages (people added or removed from the group, etc.)

Чтобы бот получал все сообщения в группах пишем BotFather команду /setprivacy и выключаем приватность.

Для начала в Handler добавляем обработчик:

if text[0] == '/': . else: response = CMD[""](message) logging.info("REPLY\t%s\t%s" % (message['chat']['id'], response)) send_reply(response) 

А потом в список команд добавляем псевдо-речь:

RESPONSES = < "Hello": ["Hi there!", "Hi!", "Welcome!", "Hello, !"], "Hi there": ["Hello!", "Hello, !", "Hi!", "Welcome!"], "Hi!": ["Hi there!", "Hello, !", "Welcome!", "Hello!"], "Welcome": ["Hi there!", "Hi!", "Hello!", "Hello, !",], > def human_response(message): leven = fuzzywuzzy.process.extract(message.get("text", ""), RESPONSES.keys(), limit=1)[0] response = if leven[1] < 75: response['text'] = "I can not understand you" else: response['text'] = random.choice(RESPONSES.get(leven[0])).format_map( ) return response 

Здесь эмпирическая константа 75 относительно неплохо отражает вероятность того, что пользователь всё-таки хотел сказать. А format_map — удобна для одинакового описания строк как требующих подстановки, так и без нее. Теперь бот будет отвечать на приветствия и иногда даже обращаться по имени.

5. Не текст.

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

Для примера расширим словарь RESPONSES:

RESPONSES["What time is it?"] = ["", " UTC"] 

И будем отлавливать текст :

if response['text'] = : response['sticker'] = "BQADAgADeAcAAlOx9wOjY2jpAAHq9DUC" del response['text'] 

Видно, что теперь структура Message уже не содержит текст, поэтому необходимо модифицировать send_reply:

def send_reply(response): if 'sticker' in response: api.post(URL + "sendSticker", data=response) elif 'text' in response: api.post(URL + "sendMessage", data=response) 

И все, теперь бот будет время от времени присылать стикер вместо времени:

6. Возможности

Благодаря удобству API и быстрому старту боты Telegram могут стать хорошей платформой для автоматизации своих действий, настройки уведомлений, создания викторин и task-based соревнований (CTF, DozoR и прочие).

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

7. Ограничения

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

К счастью, Telegram также умеет работать и по ручному обновлению, поэтому не меняя кода можно создать еще одну службу Puller, которая будет выкачивать их и слать на локальный адрес:

while True: r = requests.get(URL + "?offset=%s" % (last + 1)) if r.status_code == 200: for message in r.json()["result"]: last = int(message["update_id"]) requests.post("http://localhost:8888/", data=json.dumps(message), headers= ) else: logging.warning("FAIL " + r.text) time.sleep(3) 

P.S. По пункту 7 нашел удобное решение — размещение бота не у себя, а на heroku, благо все имена вида *.herokuapp.com защищены их собственным сертификатом.

UPD: Telegram улучшили Бот Апи, из-за чего, теперь не обязательно иметь отдельную функцию для отправки сообщений при установленном вебхуке, а в ответ на POST запрос можно отвечать тем же сформированным JSON с ответным сообщением, где одно из полей устанавливается как ч 'method': 'sendMessage' (или любой другой метод, используемый ботом).

Чат-бот в Telegram

Чат бот Telegram

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

Всё для чат-ботов в одном сервисе

Запускайте, управляйте, анализируйте. Это просто с инструментами Unisender.

Удобный конструктор

Не нужно знать программирование — всё легко сделать при помощи визуального редактора. Создавайте чат-бот в Telegram за считанные минуты: редактируйте готовые блоки в конструкторе, собирайте вопросы и ответы в цепочки, настраивайте логику отправки сообщений, добавляйте вложения.

Удобный конструктор

Галерея шаблонов

Готовые шаблоны — типовые сценарии взаимодействия для разных целей: воронки, продажи, ответы на часто задаваемые вопросы, запись к специалистам, уведомления о доставке и другие.

Выбирайте шаблон, наполняйте своим контентом и адаптируйте под потребности вашего бизнеса.

Галерея шаблонов

Готовые интеграции

В Unisender доступны больше 40 интеграций с CRM, CMS и другими платформами. Собирайте данные и управляйте процессами в одном месте.

Готовые интеграции

Аналитика

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

Аналитика

Не только Telegram

Подключайте другие мессенджеры — WhatsApp, ВКонтакте, добавляйте бота прямо на сайт. Соберите всех клиентов с разных каналов в одном месте.

Чат боты в других мессенджерах

Техподдержка 24/7

Обращайтесь с вопросами — мы рядом. Ответим в любое время суток и поможем решить проблему. Если что-то непонятно, напишите нам в чат, на почту или позвоните.

Техподдержка 24/7

Что поручить боту в Telegram

Ответы на вопросы

О товарах, услугах, режиме работы, сроках доставки.

Массовые рассылки

Про новинки, акции, специальные предложения для клиентов.

Автоворонки

От знакомства с пользователем до успешной продажи продукта

Уведомления о статусе заказа

Создание, оплата, комплектация, доставка.

Онлайн-запись

В клинику, салон красоты, на вебинар или курсы.

Внутренние коммуникации

Объявления для сотрудников, опросы, тестирования.

Доверьте чат-боту рутинные, но важные задачи

Собрать бота легко

Шаг 1. Создайте чат-карту

Соберите самые частые вопросы, придумайте текст ответов, добавьте кнопки меню.

Шаг 1. Создайте чат-карту

Шаг 2. Создайте чат-бот

Затем получите ключ-токен и привяжите его к боту в Личном кабинете.

Шаг 2. Создайте чат-бот

Шаг 3. Запустите бота и пригласите первых подписчиков

Просто загрузите список адресатов из Личного кабинета Unisender, а мы отправим автоматическую email-рассылку о новом чат-боте. Это бесплатно.

Шаг 3. Запустите бота

Больше пользы. Больше чатов. Больше продаж

Не оставляйте сообщения без ответа

Подключайте консультанта. Если чат-бот не может ответить на вопрос, присоединяйтесь к диалогу в режиме реального времени.

Не оставляйте сообщения без ответа

Персонализируйте общение

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

Персонализируйте общение

Сегментируйте аудиторию

Разделяйте пользователей на группы и отправляйте рассылки на основе их интересов.

Сегментируйте аудиторию

Принимайте платежи Скоро

Подключите платёжную систему и принимайте деньги прямо в мессенджере. Превратите бота в полноценный магазин внутри Telegram.

Принимайте платежи

Чат-боты в Telegram — топ

Всегда на связи

Чат-бот умеет общаться с пользователями в режиме 24/7. Автоматизируйте ответы на типовые вопросы, отправляйте уведомления и рассылки — в любое время суток, без участия службы поддержки.

Удобно для пользователя

Личные контакты, рабочие переписки, интересный контент — всё есть в Telegram. Не уводите клиентов из мессенджера, в котором они привыкли общаться. Будьте на связи с пользователями там, где им удобно.

Большой охват аудитории

Telegram входит в топ-3 популярных мессенджеров в мире. Больше 500 млн активных пользователей в месяц — и аудитория только растёт. Открываемость сообщений — выше 80%. Используйте эти преимущества для продвижения и продаж.

Часто задаваемые вопросы

�� Как работают боты в Telegram?

  1. Отвечать на сообщения пользователя — реагирует на текст, выбор пунктов меню и команды из букв и специальных символов.
  2. Собирать контактные данные и сохранять лиды для дальнейшей работы с клиентами.
  3. Отправлять рассылки о новинках, акциях и специальных предложениях.
  4. Подключать оператора. Консультант может присоединиться к диалогу и ответить на нетиповые вопросы.
  5. Собирать аналитику — анализируйте эффективность чат-бота и корректируйте сценарии при необходимости.
  6. Принимать оплату. Пользователь может совершать покупки прямо в мессенджере.

��️ Смогу ли я создать бота самостоятельно?

Да, это легко. В конструкторе Unisender — интуитивно понятный интерфейс. Вам не придётся создавать чат-бот с нуля. Используйте готовые шаблоны, наполняйте их своим контентом, настраивайте логику сообщений в простом визуальном редакторе.

��️ Как подключить чат-бота в Telegram, что мне для этого нужно?

  1. Перейдите в Telegram и найдите чат-бота @botfather.
  2. Наберите /newbot — это команда-«заявка» на создание бота в мессенджере. Придумайте и отправьте имя и айди бота.
  3. В ответном сообщении от @botfather найдите HTTP API, скопируйте его.
  4. В Личном кабинете Unisender выберите созданного бота, перейдите во вкладку «Каналы» и нажмите кнопку «Подключить». Введите скопированный ключ в поле «Токен».

�� Можно создать сразу несколько ботов в Telegram?

Да. В Unisender можно создавать неограниченное количество чат-ботов.

�� Сколько стоит чат-бот для Telegram?

Стоимость зависит от количества подписчиков. Есть бесплатный тестовый период. Посмотреть цены.

�� Где взять подписчиков для бота в Telegram?

  • рассказать в соцсетях;
  • разместить виджет на сайте;
  • отправить ссылку на бота при помощи SMS-рассылки или Viber-рассылки.

�� У меня есть чат-боты в другом сервисе. Их можно перенести в Unisender?

Да, мы можем помочь с переносом базы в Unisender, но каждый случай нужно рассматривать индивидуально. На возможность переноса влияют данные и параметры в данных, которые вы хотите перенести. Пожалуйста, перед переездом уточните у нашей техподдержки, доступен ли перенос базы подписчиков чат-бота именно для в вашем случае.

�� Можно ли заказать разработку чат-бота?

Команда Unisender поможет в создании чат-бота для Telegram и других мессенджеров, если вы не хотите заниматься этим самостоятельно. Подробнее об услуге.

Подключить чат-бота в Telegram

Бот в Telegram работает даже тогда, когда вы отдыхаете

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *