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("Я принимаю только документы с картинками.")
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')))
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.')