База данных пользователей - ᐈОт 50$ | Разработка чат Бота Telegram | Быстрое создание Бота Телеграм бля бизнеса | Momentum-Bots Блог
+

База данных пользователей

Dima Kit · Май 22, 2018 в 6:19 пп

Предисловие

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

Для получения списка всех пользователей бота, к сожалению у телеграмма нет api и нам придется решать это своими усилиями. Для этого будем использовать базу данных. Часто для ботов используют реляционные базы данных: SQLite, PostgreSQL. Но чтобы разобраться с ними и научится работать корректно нужен не один час, а большинство фич их широкого функционала вы не будете использовать в процессе разработки ботов.

По этому в свое время я решил использовать нереляционную MongoDB. Чтобы установить ее на свой линукс и разобраться с ней я потратил минут 30, при том что до этого я не работал вообще ни с какими базами данных.

Спустя несколько лет и перепробовав несколько разных БД я только убедился что мое решение в свое время было правильным. Единственной БД, которую я использовал на продакшне в боте помимо MongoDB был Redis. У него есть преимущество — он значительно быстрее любых других баз данных (данные хранятся в оперативной памяти, а не в статической, как во остальных БД), но его минус — отсутствие некоторых привычных контейнеров и данные приходится декодировать ибо они хранятся в байтах.

MongoDB logo

Установка MongoDB

Windows

Открываем консоль как в первом уроке. (Win+R -> «cmd» -> enter).

Так мы узнаем какая у нас ОС и архитектура. Зависимо от этих данных качаем отсюда .msi установщик. Кликаем на установщик и ставим себе MongoDB.

Linux

Для последних релизов Ubuntu/Debian есть очень простое решение как установить и добавить в автозапуск MongoDB. Открываем терминал и пишем:

Готово.

Для других дистрибутивов переходим по ссылке.

MacOS

Качаем бинарь отсюда.

Разархивируем через терминал:

Создаем папку и копируем:

Добавляем ее в PATH:

Если есть brew:

Подключаем MongoDB в наш проект

Устанавливаем пакет Python

Надеюсь у вас корректная структура проекта, и/или вы прошли этот урок.

Открываем проект и добавляем в requirements.txt

После этого вводим:

Все. Мы установили пакет для python для работы с нашей базой данных.

Пишем код добавления пользователей в базу данных

Создаем файл db.py. Пишем в него такой код:

Таким образом мы создали базу «tutorial_bot», подключились к ней и создадим коллекцию «users_db» как только запишем в нее первого юзера.

Чтобы сделать добавление пользователя в базу данных после того как он впервые написал боту (нажал Start) добавим такой код в bot_handlers.py:

Импорт:

В функцию def send_welcome(message):

Проверили, есть ли пользователь в базе и если его там нет, то добавляем. Для рассылок достаточно знать chat id.

Применение

Можем сделать интереснее — если пользователь нажал /start впервые — говорить «Добро пожаловать в бота», а если не впервые — говорить ему «Снова привет!)» Так мы применим нашу базу данных и сможем ее протестировать.

Добавим новое сообщение в messages.py:

В bot_andlers.py добавим нашу логику:

Вот и все, запускаем бота и проверяем. Должно получится вот так:

welcome bot

На всякий случай вот код урока на github.

Спасибо за внимание!

Anton Yurash

<- Вторая часть | Четвертая часть ->

Все части обучения:

  1. Наш первый бот
  2. Структура проекта бота (создаём проект)
  3. База данных пользователей
  4. Рассылки
  5. Деплоймент бота на Heroku

Всего комментариев: 0

Оставить комментарий

Ваш email не будет опубликован.

Вы можете использовать следующие HTML тэги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">