Top.Mail.Ru
Ответы
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+1

Как создать бота который не будет разрешать писать участникам в чат без подписки на телеграм канал???

я нашёл в Ютубе гайды только про "как создать бота который не выдаст что-то без подписки на тгк". а мне нужно что бы он запрещал писать участникам в чат которые не подписаны. помогите пожалуйста

По дате
По рейтингу
Аватар пользователя
Ученик
6мес

Ну, сделай так что бы не выдавал разрешение писать через роль админа. Сделай так что бы после захода выдавалась роль админа с определённым разрешением, в нашем случае возможность писать в чат, убери просто и все, а после подписки выдаст

Аватар пользователя
Мудрец
6мес

На

12345678910111213141516171819202122232425262728293031323334353637383940414243
 from telegram import Update, ChatPermissions 
from telegram.ext import Updater, CommandHandler, MessageHandler, Filters, CallbackContext 
 
TOKEN = 'ваш_токен_бота' 
CHANNEL_ID = '@ваш_канал'  # ID вашего канала 
 
def check_subscription(update: Update, context: CallbackContext): 
    user_id = update.message.from_user.id 
     
    # Проверяем, подписан ли пользователь на канал 
    try: 
        member = context.bot.get_chat_member(chat_id=CHANNEL_ID, user_id=user_id) 
        if member.status in ['member', 'administrator', 'creator']: 
            # Если подписан - разрешаем сообщение 
            return True 
        else: 
            # Если не подписан - удаляем сообщение 
            update.message.delete() 
            context.bot.send_message( 
                chat_id=update.effective_chat.id, 
                text=f"Для отправки сообщений необходимо подписаться на канал {CHANNEL_ID}" 
            ) 
            return False 
    except: 
        return False 
 
def message_handler(update: Update, context: CallbackContext): 
    if not check_subscription(update, context): 
        return 
 
def main(): 
    updater = Updater(TOKEN) 
    dp = updater.dispatcher 
 
    # Обработчик всех сообщений 
    dp.add_handler(MessageHandler(Filters.all & ~Filters.command, message_handler)) 
 
    updater.start_polling() 
    updater.idle() 
 
if __name__ == '__main__': 
    main()