Чтобы проверить, что подписка на Telegram-канал активна, можно использовать метод `get_chat_member` бота, передавая ему идентификатор чата (CHANNEL_ID) и идентификатор пользователя (msg.from_user.id). Если подписка активна, то статус пользователя возвращаемого объекта будет не равен "left".
Чтобы исправить ошибку TypeError: 'ChatMemberOwner' object is not subscriptable, вам необходимо изменить строку `if user_channel_status["status"] != 'left':` на `if user_channel_status.status != 'left':`.
В итоге ваш код будет выглядеть следующим образом:
```python
from aiogram import Bot, types
from aiogram.dispatcher import Dispatcher
from aiogram.utils import executor
# Создаем бота и диспетчер
bot = Bot(token='YOUR_TOKEN')
dp = Dispatcher(bot)
CHANNEL_ID = "YOUR_CHANNEL_ID"
@dp.message_handler(commands=['start'])
async def start_handler(msg: types.Message):
user_channel_status = await bot.get_chat_member(chat_id=CHANNEL_ID, user_id=msg.from_user.id)
if user_channel_status.status != 'left':
await msg.answer("Вы подписаны!")
else:
await msg.answer("Вы еще не подписались!")
# Запускаем бота
if __name__ == '__main__':
executor.start_polling(dp, skip_updates=True)
```
Здесь `YOUR_TOKEN` - это токен вашего бота, а `YOUR_CHANNEL_ID` - идентификатор вашего канала. Убедитесь, что вы заменили их на свои значения.