6мес


Программирование
+1Как создать бота который не будет разрешать писать участникам в чат без подписки на телеграм канал???
я нашёл в Ютубе гайды только про "как создать бота который не выдаст что-то без подписки на тгк". а мне нужно что бы он запрещал писать участникам в чат которые не подписаны. помогите пожалуйста
По дате
По рейтингу
Ну, сделай так что бы не выдавал разрешение писать через роль админа. Сделай так что бы после захода выдавалась роль админа с определённым разрешением, в нашем случае возможность писать в чат, убери просто и все, а после подписки выдаст
На
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()
Больше по теме