قبلا شما این ربات را برایم ساختید، ولی به نظر می‌رسد که ار جدید ترین رویش ها استفاده نکرده اید.: import logging
from telegram import Update, ForceReply
from telegram.ext import Updater, CommandHandler, MessageHandler, Filters, CallbackContext
import sqlite3

# تنظیمات لاگ
logging.basicConfig(
    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
    level=logging.INFO
)
logger = logging.getLogger(__name__)

# توکن ربات را اینجا وارد کنید
TOKEN = 'YOUR_TELEGRAM_BOT_TOKEN'

# شناسه تلگرام ادمین
ADMIN_ID = 123456789  # شماره تلگرام ادمین را به صورت عدد جایگزین کنید

# اطلاعات کارت بانکی برای پرداخت کارت به کارت
BANK_INFO = """
جهت پرداخت کارت به کارت، لطفاً مبلغ به حساب زیر واریز کنید:

نام بانک: بانک مثال
شماره کارت: 1234 5678 9012 3456
نام صاحب حساب: نام شما

پس از انجام پرداخت، شناسه تراکنش را در ربات وارد کنید.
"""

# اتصال به پایگاه داده
def connect_db():
    conn = sqlite3.connect('bot_database.db')
    return conn

# فرمان /start
def start(update: Update, context: CallbackContext) -> None:
    user = update.effective_user
    conn = connect_db()
    cursor = conn.cursor()
    cursor.execute("INSERT OR IGNORE INTO users (user_id, username) VALUES (?, ?)", 
                   (user.id, user.username))
    conn.commit()
    conn.close()
    update.message.reply_text(
        f'سلام {user.first_name}! برای ارسال شارژ از دستور /sendcharge استفاده کنید.'
    )

# فرمان /help
def help_command(update: Update, context: CallbackContext) -> None:
    update.message.reply_text('دستورات من:\n/start - شروع\n/help - کمک\n/sendcharge - ارسال شارژ')

# فرمان /sendcharge
def send_charge(update: Update, context: CallbackContext) -> None:
    update.message.reply_text('لطفاً شماره تلفن مقصد در افغانستان را وارد کنید:')
    return 'PHONE_NUMBER'

# دریافت شماره تلفن
def get_phone_number(update: Update, context: CallbackContext) -> None:
    phone_number = update.message.text.strip()
    if not phone_number.startswith('+93') or len(phone_number) != 13:
        update.message.reply_text('شماره نامعتبر است. لطفاً دوباره تلاش کنید:')
        return
    context.user_data['phone_number'] = phone_number
    update.message.reply_text('لطفاً مبلغ شارژ را وارد کنید (مثلاً 10000):')
    return 'AMOUNT'

# دریافت مبلغ شارژ
def get_amount(update: Update, context: CallbackContext) -> None:
    try:
        amount = float(update.message.text.strip())
        if amount <= 0:
            raise ValueError
    except ValueError:
        update.message.reply_text('مبلغ نامعتبر است. لطفاً دوباره تلاش کنید:')
        return
    context.user_data['amount'] = amount
    update.message.reply_text(BANK_INFO)
    update.message.reply_text('پس از تکمیل پرداخت، شناسه تراکنش را وارد کنید:')
    return 'TRANSACTION_ID'

# دریافت شناسه تراکنش
def get_transaction_id(update: Update, context: CallbackContext) -> None:
    transaction_id = update.message.text.strip()
    user_id = update.effective_user.id
    phone_number = context.user_data.get('phone_number')
    amount = context.user_data.get('amount')

    conn = connect_db()
    cursor = conn.cursor()
    cursor.execute("""
        INSERT INTO requests (user_id, phone_number, amount, status, transaction_id)
        VALUES (?, ?, ?, ?, ?)
    """, (user_id, phone_number, amount, 'PENDING', transaction_id))
    conn.commit()
    conn.close()

    update.message.reply_text('درخواست شما ثبت شد و در انتظار بررسی ادمین می‌باشد.')
    
    # اطلاع رسانی به ادمین
    updater.bot.send_message(
        chat_id=ADMIN_ID,
        text=f'درخواست جدید:\nکاربر: {update.effective_user.first_name} (@{update.effective_user.username})\nشماره: {phone_number}\nمبلغ: {amount}\nشناسه تراکنش: {transaction_id}'
    )

# فرمان ادمین برای مشاهده درخواست‌های در انتظار
def pending_requests(update: Update, context: CallbackContext) -> None:
    if update.effective_user.id != ADMIN_ID:
        update.message.reply_text('دسترسی ندارد.')
        return
    conn = connect_db()
    cursor = conn.cursor()
    cursor.execute("SELECT * FROM requests WHERE status = 'PENDING'")
    rows = cursor.fetchall()
    if not rows:
        update.message.reply_text('درخواستی برای بررسی وجود ندارد.')
    else:
        message = 'درخواست‌های در انتظار:\n\n'
        for row in rows:
            message += f'ID: {row[0]}\nکاربر ID: {row[1]}\nشماره: {row[2]}\nمبلغ: {row[3]}\nتراکنش: {row[4]}\n\n'
        update.message.reply_text(message)
    conn.close()

# فرمان ادمین برای تأیید درخواست
def approve_request(update: Update, context: CallbackContext) -> None:
    if update.effective_user.id != ADMIN_ID:
        update.message.reply_text('دسترسی ندارد.')
        return
    try:
        request_id = int(context.args[0])
    except (IndexError, ValueError):
        update.message.reply_text('لطفاً شناسه درخواست را وارد کنید. مثال: /approve 1')
        return
    conn = connect_db()
    cursor = conn.cursor()
    cursor.execute("SELECT user_id, phone_number, amount FROM requests WHERE request_id = ? AND status = 'PENDING'", (request_id,))
    row = cursor.fetchone()
    if not row:
        update.message.reply_text('درخواستی با این شناسه وجود ندارد یا قبلاً پردازش شده است.')
    else:
        user_id, phone_number, amount = row
        # اینجا باید منطق ارسال شارژ را پیاده‌سازی کنید
        # به عنوان مثال، فراخوانی API ارائه‌دهنده سرویس شارژ
        # فرض کنیم شارژ با موفقیت ارسال شد
        cursor.execute("UPDATE requests SET status = 'APPROVED' WHERE request_id = ?", (request_id,))
        conn.commit()
        update.message.reply_text(f'درخواست {request_id} تأیید و شارژ ارسال شد.')
        
        # اطلاع رسانی به کاربر
        updater.bot.send_message(
            chat_id=user_id,
            text=f'درخواست شما با شناسه {request_id} تأیید شد و شارژ به شماره {phone_number} ارسال شد.'
        )
    conn.close()

# فرمان ادمین برای رد درخواست
def reject_request(update: Update, context: CallbackContext) -> None:
    if update.effective_user.id != ADMIN_ID:
        update.message.reply_text('دسترسی ندارد.')
        return
    try:
        request_id = int(context.args[0])
    except (IndexError, ValueError):
        update.message.reply_text('لطفاً شناسه درخواست را وارد کنید. مثال: /reject 1')
        return
    conn = connect_db()
    cursor = conn.cursor()
    cursor.execute("SELECT user_id FROM requests WHERE request_id = ? AND status = 'PENDING'", (request_id,))
    row = cursor.fetchone()
    if not row:
        update.message.reply_text('درخواستی با این شناسه وجود ندارد یا قبلاً پردازش شده است.')
    else:
        user_id = row[0]
        cursor.execute("UPDATE requests SET status = 'REJECTED' WHERE request_id = ?", (request_id,))
        conn.commit()
        update.message.reply_text(f'درخواست {request_id} رد شد.')
        
        # اطلاع رسانی به کاربر
        updater.bot.send_message(
            chat_id=user_id,
            text=f'درخواست شما با شناسه {request_id} رد شد. لطفاً مجدداً تلاش کنید یا با ادمین تماس بگیرید.'
        )
    conn.close()

# فرمان ادمین برای ارسال شارژ (در اینجا صرفاً پیام ارسال شده است)
def send_charge(update: Update, context: CallbackContext) -> None:
    # برای پیاده‌سازی واقعی، باید API یا روش ارسال شارژ را اضافه کنید
    pass

def main():
    global updater
    updater = Updater(TOKEN, use_context=True)
    dispatcher = updater.dispatcher

    # دستورات کاربران
    dispatcher.add_handler(CommandHandler("start", start))
    dispatcher.add_handler(CommandHandler("help", help_command))
    dispatcher.add_handler(CommandHandler("sendcharge", send_charge))

    # جریان مکالمه برای ارسال شارژ
    from telegram.ext import ConversationHandler

    SENDCHARGE, PHONE_NUMBER, AMOUNT, TRANSACTION_ID = range(4)

    sendcharge_handler = ConversationHandler(
        entry_points=[CommandHandler('sendcharge', send_charge)],
        states={
            PHONE_NUMBER: [MessageHandler(Filters.text & ~Filters.command, get_phone_number)],
            AMOUNT: [MessageHandler(Filters.text & ~Filters.command, get_amount)],
            TRANSACTION_ID: [MessageHandler(Filters.text & ~Filters.command, get_transaction_id)],
        },
        fallbacks=[],
    )

    dispatcher.add_handler(sendcharge_handler)

    # دستورات ادمین
    dispatcher.add_handler(CommandHandler("pending", pending_requests))
    dispatcher.add_handler(CommandHandler("approve", approve_request, pass_args=True))
    dispatcher.add_handler(CommandHandler("reject", reject_request, pass_args=True))

    # شروع ربات
    updater.start_polling()
    updater.idle()

if __name__ == '__main__':
    main()