Last active
June 4, 2021 18:14
-
-
Save 1ort/efe9c36a8c661353235603b11e14dc49 to your computer and use it in GitHub Desktop.
Пример использования broadcaster.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from broadcaster import Broadcaster | |
broadcaster = Broadcaster() | |
@dp.callback_query_handler(admin_cb.filter(action = 'broadcast'), user_id = config.BOT_ADMINS_LIST, state='*',) | |
async def account_menu_callback(callback_query: types.CallbackQuery, callback_data, state: FSMContext): | |
current_state = await state.get_state() | |
if current_state: | |
await state.finish() | |
await callback_query.answer() | |
await callback_query.message.answer('Рассылка. Пришлите сообщение для рассылки', reply_markup = keyboards.kb_cancel) | |
await Broadcast_steps.broadcast_message.set() | |
#Сообщение для рассылки | |
@dp.message_handler(user_id = config.BOT_ADMINS_LIST, state=Broadcast_steps.broadcast_message, content_types=ContentType.ANY) | |
async def broadcast_message_handler(message: types.Message, state: FSMContext): | |
broadcaster.save_message(message) | |
await message.send_copy(message.from_user.id) | |
await message.answer('Проверьте сообщение и если нужно, отправьте новое', reply_markup = keyboards.kb_broadcast) | |
await Broadcast_steps.broadcast_confirm.set() | |
#Запуск рассылки | |
@dp.message_handler(Text(equals='Запустить'), user_id = config.BOT_ADMINS_LIST, state=Broadcast_steps.broadcast_confirm, ) | |
async def broadcast_message_handler(message: types.Message, state: FSMContext): | |
user_id_list = await BotUser.get_id_list() | |
await message.answer(f'Начинаю запускать. Количество активных юзеров: {len(user_id_list)}', reply_markup = kb_main) | |
await broadcaster.new_copy_broadcast(user_id_list).run() | |
#Завершение рассылки | |
@broadcaster.success_handler | |
async def finish_broadcast(message, results): | |
message = await message.send_copy(config.CHANNELS['broadcasts']) | |
message_text = messages.finish_broadcast.format(**results) | |
await message.reply(message_text) | |
#Юзер заблокировал бота. Помечаем как неактивного и больше не тратим на него запросы | |
@broadcaster.exception_handler(exceptions.BotBlocked) | |
async def user_blocked(user_id): | |
print(user_id) | |
#запрос к базе, хуё-моё |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment