Пример #1
0
async def photo_receiver(message: types.Message, link: Link):
    if not link.channel_id:
        await message.answer("Для публикации обоев сначала подключите канал.")
        return

    if "image" in message.document.mime_type:
        if message.document.file_size > 20000000:  # TODO: Local Bot API / Pyrogram
            await message.answer(
                "Размер этой картинки слишком большой для публикации через меня."
            )
            return

        image = await Wallpaper.query.where(
            and_(Wallpaper.unique_file_id == message.document.file_unique_id,
                 Wallpaper.channel_id == link.channel_id)).gino.first()

        chat = await message.bot.get_chat(link.channel_id)
        chat_title = helper.get_chat_title(chat)
        if image is None:
            if message.caption and not message.is_forward():
                custom_signature = message.html_text
            else:
                custom_signature = None

            image = await Wallpaper.create(
                file_id=message.document.file_id,
                unique_file_id=message.document.file_unique_id,
                user_id=message.from_user.id,
                channel_id=link.channel_id,
                extension=message.document.mime_type.split("/")[1],
                custom_signature=custom_signature,
            )

            caption_text = f"\n\n<b>Кастомная подпись:</b>\n{custom_signature}" if custom_signature else ""
            await message.reply(
                f"Файл добавлен в очередь на публикацию в <b>{chat_title}</b>.{caption_text}",
                reply_markup=get_publishing_keyboard(image.id,
                                                     link.channel_id),
                disable_web_page_preview=True,
            )

            telegraph_link = await upload_telegraph_preview(message.document)
            try:
                await image.update(telegraph_link=telegraph_link).apply()
            except NoSuchRowError:
                return
        else:
            await message.reply(
                f"Эта картинка уже в очереди на публикацию в <b>{chat_title}</b>.",
                reply_markup=get_publishing_keyboard(image.id,
                                                     link.channel_id),
                disable_web_page_preview=True,
            )
    else:
        await message.reply("Я принимаю только документы с картинками.")
Пример #2
0
async def add_mod(message: types.Message, state: FSMContext):
    if message.from_user.id != config.ADMIN:
        raise SkipHandler
    if not message.is_forward():
        await message.answer(tr(('admin', 'forward')))
        return
    await state.finish()
    me = await get_user(message.from_user)
    new_user = await get_user(message.forward_from)
    if new_user.is_moderator():
        await message.answer(tr(('admin', 'mod_already')))
        return
    await db.add_user_to_role(new_user, 'moderator', me)
    forget_user(new_user.id)
    await message.answer(tr(('admin', 'mod_added'), new_user.name))
    await bot.send_message(new_user.id, tr(('admin', 'mod_you')))
Пример #3
0
async def add_mod(message: types.Message, state: FSMContext):
    if message.from_user.id != config.ADMIN:
        raise SkipHandler
    if not message.is_forward():
        await message.answer(
            'Форвардните пост от человека, чтобы сделать его модератором.')
        return
    await state.finish()
    me = await get_user(message.from_user)
    new_user = await get_user(message.forward_from)
    if new_user.is_moderator():
        await message.answer('Он/она уже модератор.')
        return
    await db.add_user_to_role(new_user, 'moderator', me)
    forget_user(new_user.id)
    await message.answer(f'Пользователь {new_user.name} теперь модератор.')
    await bot.send_message(new_user.id,
                           'Вы теперь модератор. Попробуйте /queue и /admin.')