Бот присылает мне ссылку на канал, но нужно чтобы пользователю она отправилась после одобрения
from aiogram import Bot, Dispatcher, executor, types
from aiogram.types import InlineKeyboardMarkup, InlineKeyboardButton
bot = Bot(token="")
dp = Dispatcher(bot)
# Создаем клавиатуры для удобства пользователя
start_keyboard = types.ReplyKeyboardMarkup(resize_keyboard=True)
start_keyboard.add("Купить подписку")
confirm_keyboard = types.ReplyKeyboardMarkup(resize_keyboard=True)
confirm_keyboard.add("Да", "Нет")
cancel_keyboard = types.ReplyKeyboardMarkup(resize_keyboard=True)
cancel_keyboard.add("Отмена")
# Создаем хэндлер для команды /start
@dp.message_handler(commands=["start"])
async def start(message: types.Message):
# Приветствуем пользователя и предлагаем купить подписку
await message.answer("Привет! Я бот, который предлагает тебе подписку на крутой сервис.\n"
"Чтобы купить подписку, нажми на кнопку ниже.", reply_markup=start_keyboard)
# Создаем хэндлер для кнопки "Купить подписку"
@dp.message_handler(lambda message: message.text == "Купить подписку")
async def buy_subscription(message: types.Message):
# Переводим пользователя в состояние ожидания скриншота оплаты
# Просим пользователя отправить скриншот оплаты
await message.answer("Отлично! Чтобы купить подписку, тебе нужно оплатить ее через сервис QIWI.\n"
"Стоимость подписки - 100 рублей на месяц.\n"
"Номер кошелька - +79991234567.\n"
"После оплаты отправь мне скриншот чека.", reply_markup=cancel_keyboard)
@dp.message_handler(content_types=['photo'])
async def handle_screenshot(message: types.Message):
# Получаем файл фотографии
photo = await bot.get_file(message.photo[-1].file_id)
# Загружаем фотографию
photo_data = await bot.download_file(photo.file_path)
# Создаем инлайн-клавиатуру с кнопками одобрения и отклонения
approval_keyboard = InlineKeyboardMarkup(row_width=2)
approval_keyboard.add(InlineKeyboardButton("Одобрить", callback_data="approve"),
InlineKeyboardButton("Отклонить", callback_data="reject"))
owner_chat_id =
await bot.send_photo(owner_chat_id, photo_data, reply_markup=approval_keyboard)
# Отправляем ответ пользователю
await message.answer("Спасибо, я получил ваш скриншот и отправил его владельцу бота на рассмотрение!")
@dp.callback_query_handler(lambda c: c.data in ["approve", "reject"])
async def process_callback(callback_query: types.CallbackQuery):
await bot.answer_callback_query(callback_query.id)
action = callback_query.data
user_id = callback_query.from_user.id
if action == "approve":
# Отправляем ссылку на приватный канал пользователю
private_channel_link = "https://t.me/your_private_channel"
await bot.send_message(user_id, f"Ваша подписка одобрена! Вот ссылка на приватный канал: {private_channel_link}")
else:
# Отправляем сообщение об отклонении
await bot.send_message(user_id, "К сожалению, ваша подписка не была одобрена.")
if name == 'main':
executor.start_polling(dp)