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:
"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ğmenMerhaba 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()
Son düzenleme: