Telegram bot подключение к базе данных

Шафиев, Т. Р. Интеграция Telegram-ботов в информационных системах / Т. Р. Шафиев. — Текст : непосредственный // Молодой ученый. — 2018. — № 19 (205). — С. 123-126. — URL: https://moluch.ru/archive/205/50050/ (дата обращения: 30.05.2023).

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

Автоматизация процессов вузов, как и других отраслей, идет повышенными темпами. Вначале создали маленькие части больших информационных систем, потом их интегрировали друг в друга. Разработка таких систем явилась требованием времени — например, 4–5 тысяч студентов-контрактников должны были каждый семестр стоять в очередях для детализации своих оплаченных денег по контракту. Автоматизация этих процессов улучшила бухгалтерский учет контрактников, но не помогла студентам, они, как и раньше, должны стоять в очереди. Для решения такой проблемы можно воспользоваться Telegram-мессенджером, самым популярным среди студентов.

JAVA Как подключить Телеграм Бота к Базе Данных?

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

Для создания таких ботов надо иметь Telegram-аккаунт. Напишите в поисковой строке ключевое слово manybot, активируйте бот с отправки командой Start и следуйте инструкциям. Вы создали простой статический бот, теперь его сделаем более умным.

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

– анализируем структуры базы данных информационных систем;

– формируем запросы из базы информационных систем для отображения в боте;

– экспортируем результаты запроса в формат *.csv;

– настроим домен с поддержкой протокола https;

– импортуем данные в базу данных домена;

– с помощю Telegram API сформируем ответ к запросам пользователей.

Вы должны понимать, что с точкей зрения безопасности здесь (в данной статье) невозможно описать структуры информационный системы. Поэтому представим, что в информационный системе вуза есть таблица с данными о платежах студентов-контрактников. Сформируем SQL запрос из базы данных:

SELECT talaba.FIO, talaba.id, guruhlar.guruhnomi, shartnoma.qoldiq,shartnoma.tulov, shartnoma.sana,sharnoma.izoh

FROM talaba INNER JOIN

guruhlar ON talaba.guruh = guruhlar.id INNER JOIN

shartnoma ON talaba.id = shartnoma.talabaid

Экспортируем результаты запроса в табличный формат (можно на *.CSV) и не забываем имена столбцов.

Телеграм бот на Python / #4 – SQLite3. Подключение к базе данных

Импортируем результаты в СУБД MySQL. Данные готовы к отправке. Теперь что надо сделать, чтобы эти данные отправились к пользователям?

В процессе создания бота создается специальный токен. Токен — уникальный ключ, по которому Telegram узнает, что это именно вы. То есть это строка, по которой распознается пользователь. После получения токена с помощю Telegram API (Application Programming Interface — прикладной интерфейс программы) вы можете написать программу в следующих языках программирования:

Еще по теме:  Telegram как корпоративный мессенджер

Коды API к этим языкам программирования можно получить c портала https://github.com/.

Используя язык программирования PHP, создадим специальный код, который отвечает на запросы пользователей Telegram-бота:

  1. Страница приветствия (telegrambot.php)

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

13. Добавим памяти Telegram боту, настраиваем базу данных MongoDB.

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

Настраиваем MongoDB Atlas — это полностью управляемая облачная версия базы данных. Для использования облачного сервиса MongoDB, нужна учетная запись MongoDB Atlas. Переходим на домашнюю страницу и нажимаем кнопку Start free .

Заполняем короткую регистрационную форму.

Выбираем создание бесплатного кластера.

В первом разделе необходимо выбрать облачного провайдера AWS и регион Frankfurt , регион выбираем ближайший к нам. В разделе Cluster Tier выберите параметр M0 , чтобы создать кластер бесплатного уровня. С объемом 512 МБ пространства для хранения данных. И в разделе Cluster Name указываем имя кластера. Жмем на кнопку Create Cluster, создание кластера займет около пяти минут.

Настраиваем кластер. В разделе Database Access создаем нового пользователя, нажав кнопку Add new user . В появившемся диалоговом окне создадим имя пользователя и пароль, выбираем Read and write to any database и жмем кнопку Add User .

Затем в разделе Network Access нажимаем кнопку ADD IP ADDRESS , и в появившемся окне выбираем ALLOW ACCESS FROM ANYWHERE, за неимением статического IP-адреса, разрешаем доступ со всех IP адресов. Для добавления записи нажимаем кнопку Confirm .

Подключаемся к базе при помощи Compass — это графический интерфейс для MongoDB. Установим Compass для своей операционной системы.

Пока Compass устанавливается в MongoDB Atlas в разделе Clusters жмем кнопку CONNECT и в появившемся окне выбираем Connect with MongoDB Compass .

В следующем окне копируем подключение нажав кнопку Copy и открываем сам Compass .

При открытии Compass должен будет спросить «подставить скопированные значения» , выбираем Yes , останется ввести только пароль и нажать кнопку CONNECT .

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

Создание Чат-Бот-Магазин в Телеграм с нуля. Часть вторая

Создание окружения, рабочие методы. Блок администрирования бот-магазина. Дополнения и изменения в структуре базы данных. Знакомство с PDO.

Продолжение: (Часть 1 и Часть 3, Часть 4) цикла статей по созданию чат-бот-магазина в Телеграм. В этой статье мы перейдем непосредственно к практической части. Забегая вперед сообщу, что исходный код рассматриваемого блока администрирования можно скачать в конце статьи. Созданию окружения для работы в BOT API мы уделим особое внимание, считаю это одним из основных составляющих приложения. Что я имею ввиду под словом «окружение»: это методы запуска приложения, для работы с базой данных, метод-роутер и методы работы с BOT API. * * *

Еще по теме:  Как уйти из группы в Телеграмме если ты владелец

Настройка окружения

Рассмотрим метод запуска приложения init() — это метод, который запускает работу с базой данных и работу роутера.

setPdo(); // получаем данные от АПИ и преобразуем их в ассоциативный массив $rawData = json_decode(file_get_contents(‘php://input’), true); // направляем данные из бота в метод роутер // для определения дальнейшего выбора действий $this->router($rawData); // в любом случае вернем true для бот апи return true; > ?>
В методе работы с базой данных, создадим объект PDO и добавим его в свойство $this->pdo

host;dbname=$this->db;charset=$this->charset»; // дополнительные опции $opt = [ // способ обработки ошибок — режим исключений PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, // тип получаемого результата по-умолчанию — ассоциативный массив PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, // отключаем эмуляцию подготовленных запросов PDO::ATTR_EMULATE_PREPARES => false, // определяем кодировку запросов PDO::MYSQL_ATTR_INIT_COMMAND => «SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci» ]; // записываем объект PDO в свойство $this->pdo $this->pdo = new PDO($dsn, $this->user, $this->pass, $opt); > ?>

Наш роутер определяет какой тип данных нам пришел от BOT API и направляет их по заданному нами направлению.

В нем мы будем использовать дополнительно еще несколько инструментов для определения статуса пользователя и в случае если это администратор бота, то проверим на цель данных. Для работы нашего приложения в блоке администрирования бот-магазина, мы будем обрабатывать 2 типа данных — это message и callback_query , остальные нам пока не нужны, поэтому будем выводить предупреждение.

В тип message приходят объекты, отправленные пользователем: текст, картинки, видео, документы, аудиофайл, видеофайл и другие. Объект callback_query приходит только при нажатии inline кнопки с опцией callback_data . Мы составим условия таким образом, что принимать message будем только текст и картинки, а callback_query будем перенаправлять в необходимый метод и в нем уже обрабатывать запрос на действие.

При проверке на текстовое сообщение мы зададим несколько шаблонов в условиях и при их выполнении направим в нужные нам методы. Это стандартная команда для старта бота /start , для страницы админа /admin и еще несколько команд для отображения экранов для просмотра категорий, контактов, добавления категории.

Все остальные текстовые сообщения, которые пришли в бот, мы будем определять по действию, которое было записано во временную таблицу в бд и при условии, что пользователь является админом. Действия мы записываем в бд по мере вызова методов добавления категорий или товара в категории. При запросе на добавление категории мы запишем действие в бд как addcategory , и следующее текстовое сообщение мы будем воспринимать как название категории. В случае если будет отправлен другой контент — картинка например, то по условиям будет выведена ошибка в отправленных данных, потому что картинку мы ждем только на 5 шаге добавления товара. Обратите внимание как обрабатывается объект callback_query . Мы смотрим какое значение data приходит в объекте, это всегда (в нашем приложении) строка, состоящая из значений разделенные знаком нижнего подчеркивания и первым значением идет название метода в который нужно передать данные, далее это необходимые параметры в основном это идентификаторы.

Еще по теме:  Исчез второй аккаунт из профиля Телеграмм

getChatId($data); $text = $this->getText($data); // если пришли данные message if (array_key_exists(«message», $data)) < // дастаем действие админа из базы $action = $this->getAdminAction(); // текстовые данные if (array_key_exists(«text», $data[‘message’])) < // если это пришел старт бота if ($text == «/start») < $this->startBot($chat_id); > elseif ($text == «/admin» $this->isAdmin($chat_id)) < // выводим страницу только админу $this->adminPage(); > elseif ($text == «/admincategory» $this->isAdmin($chat_id)) < // Страница админ категорий $this->adminCategory(); > elseif ($text == «/addcategory» $this->isAdmin($chat_id)) < // отправляем на добавление категории $this->addCategory(); > elseif ($text == «/admincontact» $this->isAdmin($chat_id)) < // просмотр контактов $this->adminContact(); > else < // смотрим куда отправить данные if ($action == «addcategory» $this->isAdmin($chat_id)) < // если ждем данные для добавления категории $this->adderCategory($text); > elseif (preg_match(«~^addproduct_1_~», $action) $this->isAdmin($chat_id)) < // если ждем данные для добавления товара step_1 — название $param = explode(«_», $action); // отправляем на добавление описания $this->addProductName($param[‘2’], $text); > elseif (preg_match(«~^addproduct_2_~», $action) $this->isAdmin($chat_id)) < // если ждем данные для добавления товара step_2 — описание $param = explode(«_», $action); // отправляем на добавление описания $this->addProductDescription($param[‘2’], $param[‘3’], $text); > elseif (preg_match(«~^addproduct_3_~», $action) $this->isAdmin($chat_id)) < // если ждем данные для добавления товара step_3 — единица измерения $param = explode(«_», $action); // отправляем на добавление описания $this->addProductPrice($param[‘2’], $param[‘3’], $text); > elseif (preg_match(«~^addproduct_4_~», $action) $this->isAdmin($chat_id)) < // если ждем данные для добавления товара step_4 — цена $param = explode(«_», $action); // отправляем на добавление описания $this->addProductUnit($param[‘2’], $param[‘3’], $text); > elseif (preg_match(«~^addcontact_~», $action) $this->isAdmin($chat_id)) < // если ждем данные для для редактирования контактов $param = explode(«_», $action); // отправляем данные на редактирование контактов $this->rederContact($param[1], $text); > else < $this->sendMessage($chat_id, «Нам пока не нужны эти данные. Спасибо.»); > > > elseif (array_key_exists(«photo», $data[‘message’])) < // если пришли картинки if (preg_match(«~^addproduct_5_~», $action) $this->isAdmin($chat_id)) < // если ждем данные для добавления товара step_5 — картинка $param = explode(«_», $action); // берем данные картинки $file_id = end($data[‘message’][‘photo’])[‘file_id’]; // отправляем на добавление описания $this->addProductPhoto($param[‘2’], $param[‘3’], $file_id); > else < $this->sendMessage($chat_id, «Нам пока не нужны эти данные.

Спасибо.»); > > else < $this->sendMessage($chat_id, «Нам пока не нужны эти данные. Спасибо.»); > > // если пришел запрос на функцию обратного вызова elseif (array_key_exists(«callback_query», $data)) < // смотрим какая функция вызывается $func_param = explode(«_», $text); // определяем функцию в переменную $func = $func_param[0]; // вызываем функцию передаем ей весь объект $this->$func($data[‘callback_query’]); > // Здесь пришли пока не нужные нам форматы else < // вернем текст с ошибкой $this->sendMessage($chat_id, «Нам пока не нужны эти данные. Спасибо.»); > > ?>
Для работы с действиями администратора есть несколько методов для выборки, для записи и для очистки.

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

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