ChatGPT'nin yazdığı kod çalışmıyor

Sensei Hesami

Centipat
Katılım
20 Temmuz 2024
Mesajlar
80
Daha fazla  
Cinsiyet
Erkek
Merhaba arkadaşlar GPT ile basit bir Telegram botu yazıyorum amaç /admin @KullanıcıAdı yazınca o kişiyi kanalda veya grupta yönetici yapmak GPT kodları yazdı fakat
"Bir hata oluştu: Invalid user_id specified. Tekrar deneyin." bot bu şekilde @Kullanıcı adını bulamıyor, düzeltebilecek arkadaşlar yardımcı olursa çok sevinirim.
Tüm kodları aşağıya yazıyorum yardımcı olursanız çok sevinirim bot neden kullanıcı adını algılamıyor?
KOD:

Kod:
from telegram import Update
from telegram.ext import Application, CommandHandler, CallbackContext
import logging

# Bot token'ınızı buraya yapıştırın
TOKEN = 'Token girniz'

# Hata ayıklama için logging
logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
 level=logging.INFO)
logger = logging.getLogger(__name__)

# Bot'un başladığında çalışacak fonksiyon
async def start(update: Update, context: CallbackContext) -> None:
 await update.message.reply_text('Merhaba! Ben kanalınızın koruma botuyum.')

# /admin @kullanıcıadı komutuyla yönetici eklemek için fonksiyon
async def add_admin(update: Update, context: CallbackContext) -> None:
 chat_id = update.message.chat.id

 # Kullanıcı adı belirtilmediği takdirde uyarı mesajı
 if len(context.args) < 1:
 await update.message.reply_text(" kullanıcı adını girin. Örneğin: /admin @kullanıcıadı")
 return

 # @ işaretini kaldırıyoruz ve sadece kullanıcı adını alıyoruz
 username = context.args[0].lstrip('@') # kullanıcı adını alıyoruz, '@' işareti kaldırılıyor

 try:
 # Kullanıcıyı kanalın üyesi olarak alıyoruz
 user = await context.bot.get_chat_member(chat_id, username)

 # Eğer kullanıcı kanal üyesi değilse, işlem yapılmaz
 if user.status not in ["member", "administrator"]:
 await update.message.reply_text(f"@{username} kanal üyesi değil veya yönetici değil. geçerli bir kullanıcı adı girin.")
 return

 # Kullanıcıyı yönetici olarak atama
 await context.bot.promote_chat_member(
 chat_id,
 user.user.id, # Burada kullanıcı ID'si kullanılıyor
 can_change_info=True,
 can_post_messages=True,
 can_edit_messages=True,
 can_delete_messages=True,
 can_invite_to_group=True,
 can_pin_messages=True
 )

 await update.message.reply_text(f"@{username} başarıyla yönetici yapıldı!")

 except Exception as e:
 # Hata durumunda daha fazla bilgi veriyoruz
 logger.error(f"Error: {e}")
 await update.message.reply_text(f"Bir hata oluştu: {e}. tekrar deneyin.")

# Main fonksiyonu
def main():
 # Uygulama oluşturuyoruz
 application = Application.builder().token(TOKEN).build()

 # /start komutunu bağlayalım
 application.add_handler(CommandHandler("start", start))

 # /admin komutunu bağlayalım
 application.add_handler(CommandHandler("admin", add_admin))

 # Botu başlatıyoruz
 application.run_polling()

if __name__ == '__main__':
 main()

Merhaba arkadaşlar GPT ile basit bir Telegram botu yazıyorum amaç /admin @KullanıcıAdı yazınca o kişiyi kanalda veya grupta yönetici yapmak GPT kodları yazdı fakat
"Bir hata oluştu: Invalid user_id specified. Tekrar deneyin." bot bu şekilde @Kullanıcı adını bulamıyor, düzeltebilecek arkadaşlar yardımcı olursa çok sevinirim.
Tüm kodları aşağıya yazıyorum yardımcı olursanız çok sevinirim bot neden kullanıcı adını algılamıyor?
KOD:

Kod:
from telegram import Update
from telegram.ext import Application, CommandHandler, CallbackContext
import logging

# Bot token'ınızı buraya yapıştırın
TOKEN = 'Token girniz'

# Hata ayıklama için logging
logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
 level=logging.INFO)
logger = logging.getLogger(__name__)

# Bot'un başladığında çalışacak fonksiyon
async def start(update: Update, context: CallbackContext) -> None:
 await update.message.reply_text('Merhaba! Ben kanalınızın koruma botuyum.')

# /admin @kullanıcıadı komutuyla yönetici eklemek için fonksiyon
async def add_admin(update: Update, context: CallbackContext) -> None:
 chat_id = update.message.chat.id

 # Kullanıcı adı belirtilmediği takdirde uyarı mesajı
 if len(context.args) < 1:
 await update.message.reply_text(" kullanıcı adını girin. Örneğin: /admin @kullanıcıadı")
 return

 # @ işaretini kaldırıyoruz ve sadece kullanıcı adını alıyoruz
 username = context.args[0].lstrip('@') # kullanıcı adını alıyoruz, '@' işareti kaldırılıyor

 try:
 # Kullanıcıyı kanalın üyesi olarak alıyoruz
 user = await context.bot.get_chat_member(chat_id, username)

 # Eğer kullanıcı kanal üyesi değilse, işlem yapılmaz
 if user.status not in ["member", "administrator"]:
 await update.message.reply_text(f"@{username} kanal üyesi değil veya yönetici değil. geçerli bir kullanıcı adı girin.")
 return

 # Kullanıcıyı yönetici olarak atama
 await context.bot.promote_chat_member(
 chat_id,
 user.user.id, # Burada kullanıcı ID'si kullanılıyor
 can_change_info=True,
 can_post_messages=True,
 can_edit_messages=True,
 can_delete_messages=True,
 can_invite_to_group=True,
 can_pin_messages=True
 )

 await update.message.reply_text(f"@{username} başarıyla yönetici yapıldı!")

 except Exception as e:
 # Hata durumunda daha fazla bilgi veriyoruz
 logger.error(f"Error: {e}")
 await update.message.reply_text(f"Bir hata oluştu: {e}. tekrar deneyin.")

# Main fonksiyonu
def main():
 # Uygulama oluşturuyoruz
 application = Application.builder().token(TOKEN).build()

 # /start komutunu bağlayalım
 application.add_handler(CommandHandler("start", start))

 # /admin komutunu bağlayalım
 application.add_handler(CommandHandler("admin", add_admin))

 # Botu başlatıyoruz
 application.run_polling()

if __name__ == '__main__':
 main()
düzeltme şimdi bu sorunu çözdüm fakat bu kişi kanala üye değil hatası veriyor üye olmasına rağmen
 
Son düzenleme:

Technopat Haberler

Yeni konular

Geri
Yukarı