Рассылки
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.
Спасибо за внимание!