Skip to content

Instantly share code, notes, and snippets.

@1ort
Last active June 4, 2021 18:14
Show Gist options
  • Save 1ort/efe9c36a8c661353235603b11e14dc49 to your computer and use it in GitHub Desktop.
Save 1ort/efe9c36a8c661353235603b11e14dc49 to your computer and use it in GitHub Desktop.
Пример использования broadcaster.py
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