Для проверки подписки на канал при нажатии кнопки с ссылкой в aiogram вы можете использовать методы Telegram API для работы с членством и подписками в каналах.
Пример кода для проверки подписки на канал и отправки сообщения с инлайн кнопкой в aiogram:
```python
from aiogram import Bot, Dispatcher, types
from aiogram.types import InlineKeyboardButton, InlineKeyboardMarkup
import logging
API_TOKEN = 'YOUR_API_TOKEN'
bot = Bot(token=API_TOKEN)
dp = Dispatcher(bot)
logging.basicConfig(level=logging.INFO)
@dp.message_handler(commands=['start'])
async def start(message: types.Message):
channel_id = '@your_channel_id' # ID вашего канала
user_id = message.from_user.id
# Проверяем подписку пользователя на канал
is_member = await bot.get_chat_member(channel_id, user_id)
if is_member.status == 'member' or is_member.status == 'creator':
# Если пользователь подписан на канал, отправляем сообщение с кнопкой
inline_btn = InlineKeyboardButton('Перейти в канал', url='https://t.me/' + channel_id)
inline_kb = InlineKeyboardMarkup().add(inline_btn)
await message.answer('Вы подписаны на канал! Нажмите на кнопку, чтобы перейти в канал.', reply_markup=inline_kb)
else:
await message.answer('Подпишитесь на канал, чтобы получить доступ к контенту!')
if __name__ == '__main__':
import asyncio
loop = asyncio.get_event_loop()
loop.create_task(dp.start_polling())
loop.run_forever()
```
В этом примере при отправке команды `/start` бот проверяет подписку пользователя на канал `@your_channel_id`. Если пользователь подписан на канал, бот отправляет сообщение с инлайн кнопкой для перехода в канал. Если пользователь не подписан, бот отправляет сообщение с просьбой подписаться.
Для проверки подписки на канал используется метод `get_chat_member`, который возвращает статус подписки пользователя на канал.
Не забудьте заменить `YOUR_API_TOKEN` на ваш токен бота и `@your_channel_id` на ID вашего канала.