Телеграм бот
Структура бд начальная, можно внести свои коррективы.
users
| id | chat_id | tgid | tgname | phone |
users_actions
| user_id | message |
admins
| id | chat_id | tgid | tgname | phone | status |
subbuttons1
| id | text | status |
subbuttons2
| id | text | status |
support_dialogs
поля таблицы исходя из п.5.1.
Алгоритм работы бота:
1. Приветственное сообщение всем, кто зашел в бот.
1.1. Проверяем по бд в поле admins, присутствует ли данный пользователь. Если у пользователя tgid или tgname не совпадает с тем, что есть в бд, тогда просим его поделиться номером телефона и проверяем, есть ли такой номер в admins. Если нашли такого админа по любому идентификатору, то выводим сообщение "Админ, Вы авторизованы, ожидайте дальнейших сообщений." Любые сообщения в таком случае от пользователя игнорируются. Если же такого пользователя нет в таблице admins, тогда переходим к п. 1.2.
1.2. Проверяем по бд в поле users, присутствует ли данный пользователь. Если у пользователя tgid или tgname совпадает с тем, что есть в бд, тогда переходим к п.2., иначе просим его поделиться номером телефона и проверяем, есть ли такой номер в бд в таблице users. Если есть, то также переходим к п.2. Если нет, то выводим сообщение "Вы не авторизованы".
2. Далее в диалоге выводим две кнопки "Кнопка 1" и "Кнопка 2".
3. Если пользователь пишет произвольное сообщение в бот, не выбрав ни одну кнопку - пишем сообщение, что нужно выбрать один из вариантов и снова выводим эти две кнопки.
4. Если выбрана "Кнопка 1" пользователем, то:
4.1. Выводим сообщение "Текст сообщения до кнопки 1"
4.2. Выводим дополнительные кнопки в диалоге списком, которые берутся из бд таблицы subbuttons1 если status= active. Поле text является названием кнопки.
4.3. Далее пользователь должен выбрать одну из выведенных кнопок. Если пишет произвольное сообщение на данном этапе, не выбрав кнопку, повторно выводим ему кнопки из п. 4.2. с сообщением "Нужно выбрать один из вариантов для продолжения". Выбранный вариант кнопки запоминаем для дальнейшего использования.
4.4. Выводим дополнительные кнопки в диалоге списком, которые берутся из бд таблицы subbuttons2 если status= active. Поле text является названием кнопки.
4.5. Далее пользователь должен выбрать одну из выведенных кнопок. Если пишет произвольное сообщение на данном этапе, не выбрав кнопку, повторно выводим ему кнопки из п. 4.4. с сообщением "Нужно выбрать один из вариантов для продолжения". Выбранный вариант кнопки запоминаем для дальнейшего использования.
4.6. Теперь имея два варианта нажатых кнопок из п.4.2. и п. 4.4. выводим сообщение "Введите произвольное число". Проверяем, является ли это числом, может быть и не целое значение с округлением до тысячных. Запоминаем это число. Если было введено некорректное число или произвольное сообщение, выводим "Введите произвольное число для продолжения".
4.7. Выводим сообщение следующего формата:
- Вы выбрали: "Текст выбранной кнопки из subbuttons1"
- Вы выбрали: "Текст выбранной кнопки из subbuttons2"
- Ваше число: "Введенное число"
- Две кнопки "ОК" и "Отмена"
4.8. Если нажата "ОК" выводим сообщение "Сообщение при нажатой ОК" и записываем сообщение из п.4.7. в бд в таблицу users_actions и выводим его в этом же боте для пользователей из таблицы admins у которых статус active.
4.9. Если нажата "Отмена" выводим сами первые две кнопки из п.2. Если введено произвольное сообщение вместо выбранных вариантов, то выводим текст "Нужно выбрать один из вариантов для завершения".
5. Если выбрана "Кнопка 2" то выводим сообщение:
- Напишите свой вопрос и мы ответим на него.
5.1. Здесь нужно сделать сохранение написанного пользователем сообщения или нескольких сообщений в нашу бд в таблицу support_dialogs.
Отзыв заказчика о сотрудничестве с Дмитро Дереном
Телеграм ботПрофессионально, быстро и продуманно реализованы поставленные задачи. Дмитрий предвидит заранее множество нюансов, которые могут возникать в ходе работы конечного продукта. Рекомендую к сотрудничеству, и сам буду обращаться еще!
Отзыв фрилансера о сотрудничестве с Олександром Стасюком
Телеграм ботEverything went great, Alexander provided a clear brief, was always in touch, promptly answered questions
Актуальные фриланс-проекты в категории Веб-программирование
Исправить баги в верстке на сайте OkayCMS
700 UAH
Исправить баги в выпадающих меню на сайте на OkayCMS. Баг в отображении подкатегории меню при наведении на них CMS, Веб-программирование ∙ 23 минуты назад ∙ 17 ставок |
Небольшая правка на сайте
700 UAH
Нужно переподвизать договор оферты в футтере на новый , в компании поменялся регламент Задача на 20 минут Веб-программирование, Десктопные приложения ∙ 2 часа 49 минут назад ∙ 78 ставок |
Перенос сайта на Shopify
1123 UAH
Нужно перенести текущий сайт jdfurniture.uk с OpenCart на платформу Shopify. Сейчас сайт на OpenCart в целом нас устраивает по структуре и логике работы. Основная причина переноса — проблемы с платежными системами. На Shopify таких проблем быть не должно. Также для нас важно,… HTML и CSS верстка, Веб-программирование ∙ 17 часов 30 минут назад ∙ 31 ставка |
Веб-сайт для клининговой компании (3 языка: PL/EN/UKR) – требуется укринский языкИщу опытного веб-разработчика / программиста для создания веб-сайта для клининговой компании (отрасль уборки).Ключевая информация о проекте:Языки сайта: Сайт будет трёхязычным (польский, английский и украинский).Основное требование: Ищу программиста, для которого украинский язык… Веб-программирование ∙ 19 часов 20 минут назад ∙ 93 ставки |
Разработка веб-платформы для трейдинга с интеграцией данных SBPro, отображением кластеров, ликвидностиРазработка веб-платформы для трейдинга с интеграцией данных SBPro, отображением кластеров, ликвидности, крупных лимитных заявок (Clouds), HeatMap и автоматическими настройками индикаторов для различных таймфреймов Этап 1. Подключение к Transaq API Получение рыночных данных в… Java, Веб-программирование ∙ 22 часа 40 минут назад ∙ 40 ставок |