async def check_channel_membership(update: Update, context: ContextTypes.DEFAULT_TYPE) -> bool:
user_id = update.effective_user.id
for channel in data_store.data['required_channels']:
try:
member = await context.bot.get_chat_member(chat_id=channel, user_id=user_id)
if member.status not in ['member', 'administrator', 'creator']:
channels_text = '\n'.join(data_store.data['required_channels'])
await update.message.reply_text(
f"Dosya yükleyebilmek için lütfen aşağıdaki kanallara katılın:\n\n"
f"{channels_text}\n\n"
"Katıldıktan sonra tekrar deneyiniz."
)
return False
except Exception as e:
print(f"Error checking membership for {channel}: {e}")
continue
return True
async def handle_document(update: Update, context: ContextTypes.DEFAULT_TYPE):
user_id = update.effective_user.id
user_data = data_store.get_user_data(user_id)
if not user_data.get('upload_allowed', False):
await update.message.reply_text(
"BLABLABLABLABLABLA. "
"Menüyü görmek için /start komutunu kullanabilirsiniz."
)
return
# ÜYELİK KONTROLÜ YAPILAN ALAN BURASI
if not await check_channel_membership(update, context):
return
async def add_required_channel(update: Update, context: ContextTypes.DEFAULT_TYPE):
if not is_admin(update.message.from_user.username):
await update.message.reply_text("Bu komutu kullanma yetkiniz yok.")
return
if not context.args:
await update.message.reply_text("Kullanım: /add_channel @channel_username")
return
channel = context.args[0]
if not channel.startswith('@'):
channel = '@' + channel
if channel not in data_store.data['required_channels']:
data_store.data['required_channels'].append(channel)
data_store.save_data()
await update.message.reply_text(f"{channel} zorunlu kanallar listesine eklendi.")
else:
await update.message.reply_text(f"{channel} zaten zorunlu kanallar listesinde.")
async def remove_required_channel(update: Update, context: ContextTypes.DEFAULT_TYPE):
if not is_admin(update.message.from_user.username):
await update.message.reply_text("Bu komutu kullanma yetkiniz yok.")
return
if not context.args:
await update.message.reply_text("Kullanım: /remove_channel @channel_username")
return
channel = context.args[0]
if not channel.startswith('@'):
channel = '@' + channel
if channel in data_store.data['required_channels']:
data_store.data['required_channels'].remove(channel)
data_store.save_data()
await update.message.reply_text(f"{channel} zorunlu kanallar listesinden kaldırıldı.")
else:
await update.message.reply_text(f"{channel} zorunlu kanallar listesinde bulunamadı.")
async def list_required_channels(update: Update, context: ContextTypes.DEFAULT_TYPE):
if not is_admin(update.message.from_user.username):
await update.message.reply_text("Bu komutu kullanma yetkiniz yok.")
return
channels = data_store.data['required_channels']
if channels:
channels_text = '\n'.join(channels)
await update.message.reply_text(f"Zorunlu kanallar:\n\n{channels_text}")
else:
await update.message.reply_text("Zorunlu kanal listesi boş.")
application.add_handler(CommandHandler("add_channel", add_required_channel))
application.add_handler(CommandHandler("remove_channel", remove_required_channel))
application.add_handler(CommandHandler("list_channels", list_required_channels))
hocam çok teşekkür ederim ben chatgpt'ye yaptırdım ama sizin kodunuzu da deneyeceğim . Tekrardan çok teşekkür ederim.python örnek kod ;
Python:async def check_channel_membership(update: Update, context: ContextTypes.DEFAULT_TYPE) -> bool: user_id = update.effective_user.id for channel in data_store.data['required_channels']: try: member = await context.bot.get_chat_member(chat_id=channel, user_id=user_id) if member.status not in ['member', 'administrator', 'creator']: channels_text = '\n'.join(data_store.data['required_channels']) await update.message.reply_text( f"Dosya yükleyebilmek için lütfen aşağıdaki kanallara katılın:\n\n" f"{channels_text}\n\n" "Katıldıktan sonra tekrar deneyiniz." ) return False except Exception as e: print(f"Error checking membership for {channel}: {e}") continue return True
kendi koduna da şunu ekleyeceksin ;
Python:async def handle_document(update: Update, context: ContextTypes.DEFAULT_TYPE): user_id = update.effective_user.id user_data = data_store.get_user_data(user_id) if not user_data.get('upload_allowed', False): await update.message.reply_text( "BLABLABLABLABLABLA. " "Menüyü görmek için /start komutunu kullanabilirsiniz." ) return # ÜYELİK KONTROLÜ YAPILAN ALAN BURASI if not await check_channel_membership(update, context): return
# KANAL EKLEMEPython:async def add_required_channel(update: Update, context: ContextTypes.DEFAULT_TYPE): if not is_admin(update.message.from_user.username): await update.message.reply_text("Bu komutu kullanma yetkiniz yok.") return if not context.args: await update.message.reply_text("Kullanım: /add_channel @channel_username") return channel = context.args[0] if not channel.startswith('@'): channel = '@' + channel if channel not in data_store.data['required_channels']: data_store.data['required_channels'].append(channel) data_store.save_data() await update.message.reply_text(f"{channel} zorunlu kanallar listesine eklendi.") else: await update.message.reply_text(f"{channel} zaten zorunlu kanallar listesinde.")
# KANAL SİLMEPython:async def remove_required_channel(update: Update, context: ContextTypes.DEFAULT_TYPE): if not is_admin(update.message.from_user.username): await update.message.reply_text("Bu komutu kullanma yetkiniz yok.") return if not context.args: await update.message.reply_text("Kullanım: /remove_channel @channel_username") return channel = context.args[0] if not channel.startswith('@'): channel = '@' + channel if channel in data_store.data['required_channels']: data_store.data['required_channels'].remove(channel) data_store.save_data() await update.message.reply_text(f"{channel} zorunlu kanallar listesinden kaldırıldı.") else: await update.message.reply_text(f"{channel} zorunlu kanallar listesinde bulunamadı.")
# KANAL LİSTESİPython:async def list_required_channels(update: Update, context: ContextTypes.DEFAULT_TYPE): if not is_admin(update.message.from_user.username): await update.message.reply_text("Bu komutu kullanma yetkiniz yok.") return channels = data_store.data['required_channels'] if channels: channels_text = '\n'.join(channels) await update.message.reply_text(f"Zorunlu kanallar:\n\n{channels_text}") else: await update.message.reply_text("Zorunlu kanal listesi boş.")
bu komutlar için main'e eklenecek handle'lar ;Kod:application.add_handler(CommandHandler("add_channel", add_required_channel)) application.add_handler(CommandHandler("remove_channel", remove_required_channel)) application.add_handler(CommandHandler("list_channels", list_required_channels))