Предисловие
Данное обучение будет полезно тем, кто хочет делать рассылку пользователям, которые отписали боту и попали в базу данных. Это продолжение прошлого урока, в котором мы научились добавлять пользователей в базу данных MongoDB.
Здесь мы рассмотрим простой скрипт для рассылок, а в будущем я планирую рассказать как интегрировать полноценную админ панель с рассылкой, но в любом случае, он базирован на том, что мы сейчас напишем.
Вот пример лайтовой админки на одном из наших проектов:
![admin panel1](http://telegra.ph/file/fd568c5c1e705c7433592.png)
![admin panel2](http://telegra.ph/file/5b00f7564a7bfb4056283.png)
Никнеймы зарисованы по понятным причинам.
Также познакомимся с конструкцией try:
чтобы рассылка не прерывалась, если бот к примеру заблокирован пользователем, или возникла какая-то ошибка.
Реализация
Реализация на удивление проста.
Создадим файл sender.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
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) |
Вот так выглядит элементарная рассылка. Ее можно выполнять пока бот работает. Достаточно открыть второй терминал/консоль и ввести
1 |
python3 sender.py |
![code1](http://telegra.ph/file/1b3f331cbfb85dff7099a.png)
Дальше вводим запрашиваемое сообщение и проверяем, сработала ли рассылка.
![code2](http://telegra.ph/file/29f8c88a6eb3365a65e02.png)
Все пришло!)
![result](http://telegra.ph/file/e05d4b3a151b1314144e1.png)
На всякий случай вот код урока на github.
Спасибо за внимание!
<- Третья часть | Пятая часть ->
Всего комментариев: 0