Как сделать проверку на подписку телеграмм канала? (aiogram)
Нужно сделать чтобы бот работал только когда подписан на телеграмм канал
from aiogram import Bot, Dispatcher, executor, types
import Confing as nav
TOKEN = 'TOKEN'
Channel_id = 'ID'
NOTSUB = "Чтобы использовать бота, сначала подпишетесь на канал"
bot = Bot(token=TOKEN)
dp = Dispatcher(bot)
def check_sub_channel(chat_mem):
print(chat_mem['status'])
if chat_mem['status'] !='left':
return True
else:
return False
@dp.message_handler(commands=['start'])
async def start(message: types.Message):
if check_sub_channel(await bot.get_chat_member(chat_id=Channel_id, user_id=message.from_user.id)):
await bot.send_message(message.from_user.id, "Привет")
else:
await bot.send_message(message.from_user.id, NOTSUB, reply_markup=nav.checksubmenu)
@dp.message_handler(commands=['help'])
async def info(message: types.Message):
if check_sub_channel(await bot.get_chat_member(chat_id=Channel_id, user_id=message.from_user.id)):
markup = types.InlineKeyboardMarkup()
markup.add(types.InlineKeyboardButton('site', url='https://www.youtube.com'))
await message.reply('helll', reply_markup=markup)
else:
await bot.send_message(message.from_user.id, NOTSUB, reply_markup=nav.checksubmenu)
@dp.callback_query_handler(text='subchennel')
async def subchennel(message: types.Message):
await bot.delete_message(message.from_user.id, message.message_id)
if check_sub_channel(await bot.get_chat_member(chat_id=Channel_id, user_id=message.from_user.id)):
await bot.send_message(message.from_user.id, "Привет")
else:
await bot.send_message(message.from_user.id, NOTSUB, reply_markup=nav.checksubmenu)
if __name__ == '__main__':
executor.start_polling(dp)`
from aiogram.types import ReplyKeyboardMarkup, KeyboardButton, InlineKeyboardMarkup, InlineKeyboardButton
bthurl = InlineKeyboardButton(text="Канал", url= 'https')
bthsub = InlineKeyboardButton(text="Я подписался", callblack_data="subchennel")
checksubmenu = InlineKeyboardMarkup(row_width=1)
checksubmenu.insert(bthurl)
checksubmenu.insert(bthsub)
Источник: Stack Overflow на русском