Рассылки

Рассылки

Anton Yurash

Предисловие

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

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

Вот пример лайтовой админки на одном из наших проектов:

Никнеймы зарисованы по понятным причинам.

Также познакомимся с конструкцией try: чтобы рассылка не прерывалась, если бот к примеру заблокирован пользователем, или возникла какая-то ошибка.

Реализация

Реализация на удивление проста.

Создадим файл sender.py

from db import users_db
from bot import bot


def send_message_to_all_users(message: str):
   # Функция для рассылки, принимает сообщение
   if message != '':
       # Перебираем всех пользователей в бд
       for user in users_db.find():
           # Пытаемся отправить сообщение
           try:
               bot.send_message(user['chat_id'], message)
           # Если какая-то ошибка - выводим это
           except Exception as e:
               print('Something wrong')


if __name__ == '__main__':
   # Считываем сообщение с клавиатуры
   input_message = input('Введите сообщение для рассылки: ')
   send_message_to_all_users(input_message)


Вот так выглядит элементарная рассылка. Ее можно выполнять пока бот работает. Достаточно открыть второй терминал/консоль и ввести

python3 sender.py 



Дальше вводим запрашиваемое сообщение и проверяем, сработала ли рассылка.

Все пришло!)

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

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

Anton Yurash

<- Третья часть

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

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