الرئيسية Claude AI مركز التعلم القطاعات تواصل معنا
واتساب اتصل بنا

بناء بوت تليجرام ذكي بكلود AI

telegram bot - كلود AI

لماذا تليجرام؟ ولماذا كلود AI؟

تليجرام ليس مجرد تطبيق مراسلة — إنه منصة برمجية متكاملة يستخدمها أكثر من 900 مليون مستخدم حول العالم، ويحتضن ملايين المجموعات والقنوات التي تعتمد عليها الشركات والمجتمعات يومياً. ما يجعل تليجرام مختلفاً عن غيره هو Telegram Bot API المجاني تماماً بلا حدود، والذي يتيح لأي مطوّر بناء بوتات قادرة على التفاعل مع المستخدمين، وإدارة المجموعات، وأتمتة القنوات، وإرسال إشعارات مجدولة — كل ذلك بدون رسوم على عدد الرسائل.

حين تدمج هذه الإمكانية مع كلود AI من Anthropic، تحصل على بوت لا يردّ فقط على الأوامر المحددة مسبقاً، بل يفهم السياق ويحلل الطلبات المعقدة ويكتب إجابات طويلة ودقيقة بالعربية والإنجليزية. الفرق بين بوت تليجرام عادي وبوت مدعوم بكلود AI مثل الفرق بين آلة حاسبة وخبير مالي — الأول ينفذ أوامر، والثاني يفكر معك.

ما الذي ستتعلمه في هذا الدليل؟
  • إنشاء بوت تليجرام جديد عبر BotFather خطوة بخطوة
  • إعداد بيئة Python وتثبيت المكتبات اللازمة
  • كتابة كود الاستقبال والرد الذكي عبر Claude API
  • بناء Inline Keyboards وقوائم تفاعلية
  • تحديد الأوامر وإضافة لوحة تحكم /start
  • إدارة المجموعات تلقائياً بالذكاء الاصطناعي
  • أتمتة النشر في القنوات
  • نشر البوت على سيرفر ووضعه في الإنتاج

الخطوة الأولى: إنشاء البوت عبر BotFather

BotFather هو البوت الرسمي من تليجرام الذي يمكّنك من إنشاء وإدارة بوتاتك الخاصة. لا تحتاج أي حساب مطوّر أو بطاقة ائتمان — فقط حساب تليجرام عادي.

1

افتح محادثة مع @BotFather

ابحث في تليجرام عن @BotFather (التحقق الأزرق ضروري) وابدأ المحادثة بالضغط على Start أو إرسال /start.

2

أرسل أمر /newbot

سيطلب منك BotFather اسماً للبوت (يظهر للمستخدمين مثل "MySmartBot") ثم username ينتهي بـ "bot" مثل "mysmartbot_bot". اختر username فريداً غير مستخدم.

3

احفظ الـ Bot Token بأمان

بعد إنشاء البوت يعطيك BotFather رسالة تحتوي على Bot Token بصيغة مثل 7654321987:AAHxyz... — هذا هو مفتاح البوت، احفظه في مكان آمن ولا تنشره أبداً.

4

أعدد الأوامر والوصف (اختياري الآن)

أرسل /setcommands لتحديد قائمة الأوامر المتاحة، و/setdescription لتحديد وصف البوت، و/setuserpic لرفع صورة البوت. يمكن تأجيل هذه الخطوات لما بعد الانتهاء من الكود.

إعداد بيئة التطوير

سنستخدم Python 3.10+ مع مكتبة python-telegram-bot v20+ التي تدعم async بشكل كامل، إلى جانب Anthropic Python SDK للتواصل مع كلود AI. هذا الثنائي هو المعيار الذي يعتمده المطوّرون في 2026 لسهولة الاستخدام وقوة الإمكانات.

BASH — تثبيت المكتبات
# إنشاء بيئة افتراضية
python -m venv telegram_bot_env
source telegram_bot_env/bin/activate   # Linux/Mac
# telegram_bot_env\Scripts\activate    # Windows

# تثبيت المكتبات
pip install python-telegram-bot==20.7
pip install anthropic
pip install python-dotenv
pip install aiohttp

بعد تثبيت المكتبات، أنشئ ملف .env في مجلد المشروع لتخزين المفاتيح السرية بعيداً عن الكود:

.env — المفاتيح السرية
TELEGRAM_BOT_TOKEN=7654321987:AAHxyz_your_actual_token_here
ANTHROPIC_API_KEY=sk-ant-api03-your_actual_key_here
BOT_NAME=SmartBot
MAX_HISTORY=20
تنبيه أمني مهم

أضف .env إلى ملف .gitignore حتماً قبل رفع الكود لـ GitHub. لا تضع مفاتيح API مباشرة في الكود — حساب تليجرام وAnthropic كلاهما في خطر إذا تسرّب Token.

كتابة الكود الأساسي — استقبال الرسائل والرد بكلود

الكود التالي هو هيكل بوت تليجرام كامل يستقبل رسائل المستخدمين ويمررها لكلود AI ويعيد الردود. الكود مكتوب بأسلوب async لضمان معالجة رسائل متعددة في وقت واحد دون تأخير.

Python — bot.py الملف الرئيسي
import os
import logging
from dotenv import load_dotenv
from telegram import Update
from telegram.ext import (
    Application, CommandHandler, MessageHandler,
    filters, ContextTypes
)
import anthropic

load_dotenv()

# الإعدادات
TELEGRAM_TOKEN = os.getenv("TELEGRAM_BOT_TOKEN")
ANTHROPIC_KEY  = os.getenv("ANTHROPIC_API_KEY")
MAX_HISTORY    = int(os.getenv("MAX_HISTORY", 20))

# تهيئة عميل كلود
claude = anthropic.Anthropic(api_key=ANTHROPIC_KEY)

# تخزين سجل المحادثات (في الذاكرة — استبدله بـ Redis للإنتاج)
conversation_history: dict[int, list] = {}

logging.basicConfig(
    format="%(asctime)s - %(name)s - %(levelname)s - %(message)s",
    level=logging.INFO
)

# ===== معالج /start =====
async def start_command(update: Update, context: ContextTypes.DEFAULT_TYPE):
    user_name = update.effective_user.first_name
    welcome_text = (
        f"مرحباً {user_name}! أنا بوت ذكي مدعوم بـ Claude AI.\n\n"
        "يمكنني مساعدتك في:\n"
        "• الإجابة على أسئلتك بالعربية والإنجليزية\n"
        "• تحليل النصوص والمستندات\n"
        "• كتابة المحتوى والترجمة\n"
        "• البرمجة والأكواد\n\n"
        "أرسل لي أي رسالة للبدء، أو اكتب /help لمزيد من المعلومات."
    )
    await update.message.reply_text(welcome_text)

# ===== معالج /help =====
async def help_command(update: Update, context: ContextTypes.DEFAULT_TYPE):
    help_text = (
        "الأوامر المتاحة:\n\n"
        "/start — الصفحة الرئيسية\n"
        "/help — هذه الرسالة\n"
        "/clear — مسح سجل المحادثة\n"
        "/about — معلومات عن البوت\n\n"
        "يمكنك أيضاً إرسال أي رسالة نصية وسأرد عليك فوراً."
    )
    await update.message.reply_text(help_text)

# ===== معالج /clear =====
async def clear_command(update: Update, context: ContextTypes.DEFAULT_TYPE):
    user_id = update.effective_user.id
    conversation_history.pop(user_id, None)
    await update.message.reply_text("تم مسح سجل محادثتك. ابدأ من جديد!")

# ===== معالج الرسائل النصية العادية =====
async def handle_message(update: Update, context: ContextTypes.DEFAULT_TYPE):
    user_id  = update.effective_user.id
    user_msg = update.message.text

    # إضافة رسالة المستخدم للسجل
    if user_id not in conversation_history:
        conversation_history[user_id] = []
    conversation_history[user_id].append({"role": "user", "content": user_msg})

    # الاحتفاظ بآخر MAX_HISTORY رسالة فقط
    if len(conversation_history[user_id]) > MAX_HISTORY * 2:
        conversation_history[user_id] = conversation_history[user_id][-MAX_HISTORY * 2:]

    # إرسال "يكتب..." للمستخدم
    await context.bot.send_chat_action(
        chat_id=update.effective_chat.id,
        action="typing"
    )

    try:
        # استدعاء Claude API
        response = claude.messages.create(
            model="claude-opus-4-5",
            max_tokens=1024,
            system=(
                "أنت مساعد ذكي يتحدث العربية بطلاقة. "
                "كن مختصراً ومفيداً في ردودك. "
                "استخدم نقاطاً أو قوائم عند الحاجة لتنظيم المعلومات."
            ),
            messages=conversation_history[user_id]
        )

        bot_reply = response.content[0].text

        # إضافة رد البوت للسجل
        conversation_history[user_id].append({"role": "assistant", "content": bot_reply})

        await update.message.reply_text(bot_reply)

    except Exception as e:
        logging.error(f"خطأ في Claude API: {e}")
        await update.message.reply_text("حدث خطأ مؤقت. حاول مرة أخرى بعد لحظة.")

# ===== نقطة البداية =====
def main():
    app = Application.builder().token(TELEGRAM_TOKEN).build()

    app.add_handler(CommandHandler("start", start_command))
    app.add_handler(CommandHandler("help",  help_command))
    app.add_handler(CommandHandler("clear", clear_command))
    app.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, handle_message))

    print("البوت يعمل... اضغط Ctrl+C للإيقاف")
    app.run_polling(allowed_updates=Update.ALL_TYPES)

if __name__ == "__main__":
    main()

Inline Keyboards — القوائم التفاعلية

Inline Keyboards هي أزرار تظهر أسفل رسائل البوت مباشرة، تتيح للمستخدمين التفاعل بنقرة واحدة بدلاً من كتابة أوامر. هذا يجعل البوت أكثر سهولة ويُقلل الأخطاء الإملائية في الأوامر. مثال عملي: قائمة اختيار تخصص المساعدة.

Python — Inline Keyboard مثال كامل
from telegram import InlineKeyboardButton, InlineKeyboardMarkup
from telegram.ext import CallbackQueryHandler

# ===== إرسال قائمة تفاعلية =====
async def menu_command(update: Update, context: ContextTypes.DEFAULT_TYPE):
    keyboard = [
        [
            InlineKeyboardButton("كتابة المحتوى", callback_data="mode_content"),
            InlineKeyboardButton("البرمجة",       callback_data="mode_code")
        ],
        [
            InlineKeyboardButton("الترجمة",       callback_data="mode_translate"),
            InlineKeyboardButton("التحليل",        callback_data="mode_analysis")
        ],
        [
            InlineKeyboardButton("محادثة عادية",  callback_data="mode_chat")
        ]
    ]
    reply_markup = InlineKeyboardMarkup(keyboard)

    await update.message.reply_text(
        "اختر وضع المساعدة المناسب:",
        reply_markup=reply_markup
    )

# ===== معالج ضغط الأزرار =====
async def button_callback(update: Update, context: ContextTypes.DEFAULT_TYPE):
    query = update.callback_query
    await query.answer()  # إيقاف رمز التحميل على الزر

    mode_labels = {
        "mode_content":   "كتابة المحتوى",
        "mode_code":      "مساعد برمجة",
        "mode_translate": "مترجم ذكي",
        "mode_analysis":  "محلل نصوص",
        "mode_chat":      "محادثة عامة"
    }

    selected = mode_labels.get(query.data, "محادثة عامة")
    user_id  = query.from_user.id

    # تحديث System Prompt بناءً على الاختيار
    context.user_data["mode"] = query.data

    await query.edit_message_text(
        f"تم اختيار: {selected}\n\nأرسل رسالتك الآن وسأساعدك في هذا الوضع."
    )

# أضف في main():
# app.add_handler(CommandHandler("menu", menu_command))
# app.add_handler(CallbackQueryHandler(button_callback))

بعد تسجيل CallbackQueryHandler، أي ضغط على زر Inline Keyboard يصل تلقائياً لدالة button_callback. قيمة callback_data هي التي تحدد أي زر ضغط المستخدم، ويمكن أن تكون نصاً بسيطاً أو JSON لبيانات أكثر تعقيداً.

بوت إدارة المجموعات الذكي

إدارة المجموعات الكبيرة على تليجرام مهمة استنزافية — حذف رسائل السبام، تحذير المخالفين، الرد على الأسئلة المتكررة. بوت مدعوم بكلود يحل هذه المشكلة تلقائياً ويُحرر المشرفين للتركيز على المحتوى الحقيقي.

الخطوات الأساسية لبوت إدارة المجموعات

1

أضف البوت للمجموعة وامنحه صلاحيات المشرف

من إعدادات المجموعة ← المشرفون ← إضافة مشرف ← ابحث عن اسم البوت. فعّل صلاحيات: حذف الرسائل، حظر المستخدمين، تثبيت الرسائل.

2

فعّل استقبال كل رسائل المجموعة

في BotFather أرسل /setprivacy ثم اختر DISABLE حتى يستقبل البوت كل رسائل المجموعة وليس فقط الأوامر المباشرة.

3

اكتب منطق التحليل والمعالجة

استخدم Claude لتحليل كل رسالة وتصنيفها: سبام، محتوى مسيء، إعلان غير مرخص، أو رسالة عادية — ثم نفّذ الإجراء المناسب تلقائياً.

Python — تحليل رسائل المجموعة بكلود
async def moderate_group_message(update: Update, context: ContextTypes.DEFAULT_TYPE):
    # تجاهل الرسائل من المشرفين
    chat_member = await context.bot.get_chat_member(
        update.effective_chat.id,
        update.effective_user.id
    )
    if chat_member.status in ["administrator", "creator"]:
        return

    message_text = update.message.text or ""
    if not message_text:
        return

    # تحليل الرسالة بكلود
    analysis = claude.messages.create(
        model="claude-haiku-4-5",
        max_tokens=100,
        system=(
            "أنت مشرف ذكي لمجموعة تليجرام. "
            "صنّف الرسالة التالية بكلمة واحدة فقط:\n"
            "SPAM: إعلان أو ترويج غير مرخص\n"
            "OFFENSIVE: محتوى مسيء أو مخالف\n"
            "FLOOD: رسائل متكررة بلا معنى\n"
            "OK: رسالة عادية مسموح بها"
        ),
        messages=[{"role": "user", "content": message_text}]
    )

    verdict = analysis.content[0].text.strip().upper()

    if verdict in ["SPAM", "OFFENSIVE", "FLOOD"]:
        # حذف الرسالة
        await update.message.delete()

        # تحذير المستخدم
        user_mention = update.effective_user.mention_html()
        warning_msg = await context.bot.send_message(
            chat_id=update.effective_chat.id,
            text=f"⚠️ {user_mention} تم حذف رسالتك لمخالفة قواعد المجموعة.",
            parse_mode="HTML"
        )

        # حذف رسالة التحذير بعد 10 ثوانٍ
        import asyncio
        await asyncio.sleep(10)
        await warning_msg.delete()
نصيحة للأداء

استخدم Claude Haiku لمهام التصنيف السريعة في المجموعات — أسرع وأرخص بكثير من Sonnet أو Opus، وكافٍ لتحديد السبام. احتفظ بـ Claude Sonnet أو Opus للمهام التي تتطلب فهماً عميقاً مثل الإجابة على الأسئلة التقنية.

أتمتة القنوات — نشر المحتوى تلقائياً

القنوات على تليجرام تختلف عن المجموعات — المشتركون يستقبلون المحتوى فقط ولا يستطيعون الرد مباشرة. البوت يمكنه أن يكون مديراً للقناة ينشر مقالات ومنشورات مجدولة وتقارير يومية وتحليلات سوق أو أي محتوى تحدده — كل ذلك تلقائياً بدون تدخل بشري.

سيناريو عملي: قناة نشرة إخبارية يومية

Python — جدولة نشر المحتوى في القناة
import asyncio
from datetime import datetime
from telegram.ext import Application

CHANNEL_ID = "@your_channel_username"  # أو رقم Channel ID

async def generate_and_post_daily_brief(bot):
    """تولّد وتنشر ملخصاً يومياً في القناة"""

    # توليد المحتوى بكلود
    today = datetime.now().strftime("%A %d %B %Y")
    response = claude.messages.create(
        model="claude-opus-4-5",
        max_tokens=600,
        system=(
            "أنت محرر نشرة إخبارية احترافية متخصص في التقنية والذكاء الاصطناعي. "
            "اكتب منشوراً موجزاً وجذاباً لقناة تليجرام. "
            "استخدم Emojis باعتدال وقسّم المحتوى بوضوح."
        ),
        messages=[{
            "role": "user",
            "content": f"اكتب ملخص يوم {today} في مجال الذكاء الاصطناعي والتقنية."
        }]
    )

    post_text = response.content[0].text

    # نشر في القناة
    await bot.send_message(
        chat_id=CHANNEL_ID,
        text=post_text,
        parse_mode="Markdown"
    )
    print(f"تم النشر بنجاح في {datetime.now()}")

async def scheduled_poster():
    """حلقة الجدولة — تنشر كل يوم في الساعة 9 صباحاً"""
    app = Application.builder().token(TELEGRAM_TOKEN).build()
    async with app:
        while True:
            now = datetime.now()
            # حساب الوقت حتى الساعة 9 صباحاً
            if now.hour == 9 and now.minute == 0:
                await generate_and_post_daily_brief(app.bot)
            await asyncio.sleep(60)  # فحص كل دقيقة

if __name__ == "__main__":
    asyncio.run(scheduled_poster())

في بيئة الإنتاج، استبدل حلقة while البسيطة بمكتبة APScheduler أو celery للجدولة الاحترافية مع دعم المناطق الزمنية المختلفة وإعادة المحاولة عند الفشل.

إدارة ذاكرة المحادثة بشكل احترافي

الكود الأساسي يخزن المحادثات في ذاكرة Python — وهذا يعني أن كل مرة تُعيد تشغيل البوت، تُفقد كل سجلات المحادثات. للبوتات في الإنتاج، تحتاج قاعدة بيانات دائمة. الحلول المتاحة حسب الحجم:

الحل المناسب لـ السرعة التكلفة
SQLite حتى 1,000 مستخدم متوسطة مجاني
Redis حتى 100,000 مستخدم سريع جداً 5-20 دولار/شهر
PostgreSQL ملايين المستخدمين سريع + مرن 10-50 دولار/شهر
MongoDB بيانات غير منتظمة سريع مجاني (Atlas Free)
Python — تخزين المحادثات في SQLite
import sqlite3
import json
from datetime import datetime

def init_db():
    conn = sqlite3.connect("bot_conversations.db")
    conn.execute("""
        CREATE TABLE IF NOT EXISTS conversations (
            user_id   INTEGER PRIMARY KEY,
            messages  TEXT NOT NULL,
            updated_at TEXT NOT NULL
        )
    """)
    conn.commit()
    conn.close()

def get_history(user_id: int) -> list:
    conn = sqlite3.connect("bot_conversations.db")
    row = conn.execute(
        "SELECT messages FROM conversations WHERE user_id = ?", (user_id,)
    ).fetchone()
    conn.close()
    return json.loads(row[0]) if row else []

def save_history(user_id: int, messages: list):
    conn = sqlite3.connect("bot_conversations.db")
    conn.execute("""
        INSERT INTO conversations (user_id, messages, updated_at)
        VALUES (?, ?, ?)
        ON CONFLICT(user_id) DO UPDATE SET
            messages = excluded.messages,
            updated_at = excluded.updated_at
    """, (user_id, json.dumps(messages, ensure_ascii=False), datetime.now().isoformat()))
    conn.commit()
    conn.close()

نشر البوت على السيرفر — من التطوير للإنتاج

تشغيل البوت محلياً على جهازك كافٍ للتطوير والاختبار، لكن للإنتاج الحقيقي تحتاج خادماً يعمل 24/7. الخيارات المتاحة في 2026:

خيار 1: Railway (الأسهل للمبتدئين)

1

ارفع الكود على GitHub

أنشئ مستودعاً خاصاً ورفع ملفات البوت (بدون ملف .env بالطبع).

2

أنشئ مشروعاً في Railway

من railway.app اربط حسابك بـ GitHub واختر المستودع. Railway يكتشف Python تلقائياً ويبني المشروع.

3

أضف متغيرات البيئة

من Settings ← Variables أضف TELEGRAM_BOT_TOKEN وANTHROPIC_API_KEY بنفس القيم في ملف .env المحلي.

4

أضف ملف Procfile

أنشئ ملف Procfile بالمحتوى: worker: python bot.py حتى يعرف Railway كيف يشغّل التطبيق.

خيار 2: VPS مع Webhook (الأسرع للإنتاج)

Webhook أسرع من Polling لأن تليجرام يرسل التحديثات مباشرة لسيرفرك بدل أن يسألهم البوت كل ثانية. يتطلب دومين أو IP ثابت مع HTTPS.

Python — تشغيل البوت بـ Webhook
def main_webhook():
    app = Application.builder().token(TELEGRAM_TOKEN).build()

    # أضف الـ Handlers هنا...

    WEBHOOK_URL = "https://yourdomain.com/webhook"
    PORT = int(os.getenv("PORT", 8443))

    app.run_webhook(
        listen="0.0.0.0",
        port=PORT,
        url_path="/webhook",
        webhook_url=WEBHOOK_URL,
        # للـ SSL الذاتي:
        # cert="./cert.pem",
        # key="./private.key"
    )

8 نصائح ذهبية لبوت تليجرام احترافي

01

حدّد System Prompt بعناية

الـ System Prompt هو شخصية البوت — كلما كان أوضح ومخصصاً، كانت ردود كلود أكثر دقة وملاءمة. اكتب فيه مهمة البوت ونبرة الحديث والموضوعات المسموح بها.

02

استخدم Rate Limiting

حدّد عدداً أقصى للرسائل لكل مستخدم في الدقيقة (مثلاً 10 رسائل/دقيقة) لمنع إساءة الاستخدام وحماية ميزانية Claude API من الاستنزاف السريع.

03

أضف Typing Indicator دائماً

أرسل send_chat_action(action="typing") قبل كل رد لإظهار "يكتب..." — هذا يُحسّن تجربة المستخدم ويخبره أن البوت يعالج رسالته.

04

تعامل مع حد 4096 حرف

تليجرام يرفض الرسائل التي تتجاوز 4096 حرفاً. اكتب دالة تقسّم الردود الطويلة تلقائياً إلى أجزاء وترسلها بالتسلسل مع فاصل زمني قصير.

05

سجّل الأخطاء بـ Logging

لا تكتفِ بـ print() — استخدم Python logging بمستويات مختلفة (INFO, WARNING, ERROR) واحفظ السجلات في ملف. هذا يساعدك في تتبع المشكلات في الإنتاج.

06

اختبر بـ unit tests قبل النشر

اكتب اختبارات بسيطة لكل handler مع mock لـ Telegram API وClaude API. هذا يوفّر ساعات من debugging لاحقاً ويمنع الأخطاء في بيئة الإنتاج.

07

راقب التكلفة بـ Usage Alerts

فعّل تنبيهات الاستخدام في Anthropic Console وحدّد حداً أقصى شهرياً. تتبّع عدد الـ tokens في كل استجابة وسجّلها لتحليل التكلفة وتحسينها بمرور الوقت.

08

احتفظ بـ Fallback للأخطاء

حين يفشل Claude API بسبب timeout أو rate limit، لا تُظهر رسالة خطأ تقنية للمستخدم. بدلاً من ذلك أرسل رسالة عربية ودية وأعد المحاولة في الخلفية بعد 3 ثوانٍ.

5 ميزات خفية يجهلها معظم المطوّرين

MemoryView للمحادثات الطويلة

بدل إرسال كامل سجل المحادثة لكلود (مكلف)، ابنِ ملخصاً تراكمياً: كل 10 رسائل اطلب من كلود تلخيصها في 3 أسطر، واحتفظ بهذا الملخص مع آخر 5 رسائل فقط. هذا يُخفّض التكلفة 70% مع الحفاظ على السياق.

Deep Linking لإطلاق سيناريوهات

رابط https://t.me/yourbot?start=promo2026 يُطلق البوت ويمرر promo2026 كـ payload لـ /start handler. استخدم هذا لتخصيص تجربة الدخول حسب مصدر الإحالة أو حملة تسويقية بعينها.

Conversation Handler للسيناريوهات متعددة الخطوات

مكتبة python-telegram-bot تحتوي على ConversationHandler يُمكّنك من بناء نماذج تفاعلية متعددة الخطوات (مثل نموذج حجز) حيث كل خطوة لها handler خاص وينتقل البوت بينها بشكل منظم.

Streaming Responses مع كلود

Claude API يدعم Streaming — يمكن إرسال الرد جملة بجملة بدل انتظار اكتماله. استخدم claude.messages.stream() مع تحديث رسالة تليجرام تدريجياً عبر edit_message_text() لتجربة "كتابة مباشرة" مذهلة.

Bot API Files — تحليل المستندات والصور

البوت يستطيع استقبال ملفات PDF وصور وملفات نصية. حمّل الملف من تليجرام، مرّره لكلود بصيغة base64 (للصور) أو نص مستخرج (للـ PDF)، واطلب منه التحليل والملخص والإجابة على أسئلة محددة حول المحتوى.

الأسئلة الشائعة

هل يحتاج بوت تليجرام خادماً مستمراً أم يعمل بـ Polling؟

البوت يعمل بطريقتين: Polling مناسب للتطوير المحلي حيث يسأل السيرفر عن التحديثات كل ثوانٍ، وWebhook هو الأفضل للإنتاج حيث يرسل تليجرام التحديثات مباشرة لسيرفرك فور وصولها. Webhook يحتاج خادماً يعمل 24/7 مع HTTPS، وهو أسرع وأقل استهلاكاً للموارد بشكل واضح.

ما البرمجة المطلوبة لبناء بوت تليجرام مع كلود AI؟

Python هي الأسهل والأكثر استخداماً — مكتبة python-telegram-bot تبسّط التعامل مع Telegram API بشكل كبير. تحتاج معرفة أساسية بـ Python وasync/await وكيفية استدعاء APIs الخارجية. المبتدئ الذي يعرف Python يستطيع بناء بوت بسيط في ساعتين اتباعاً لهذا الدليل.

كيف يتذكر البوت سياق المحادثة السابقة؟

كلود لا يتذكر المحادثات تلقائياً — كل استدعاء API مستقل. الحل هو تخزين سجل المحادثة لكل مستخدم في قاعدة بيانات (SQLite أو Redis) وإرساله مع كل طلب جديد ضمن messages array. يمكن تحديد نافذة ذاكرة مثل آخر 20 رسالة للتحكم في التكلفة دون فقدان السياق المهم.

هل يمكن للبوت إدارة مجموعة وطرد المخالفين تلقائياً؟

نعم، بعد تعيين البوت مشرفاً في المجموعة يمكنه استقبال كل الرسائل وتحليلها بكلود، حذف الرسائل المخالفة، تحذير المستخدمين، وحظرهم مؤقتاً أو دائماً. كلود يساعد في تصنيف المحتوى وتحديد ما إذا كانت الرسالة مخالفة للقواعد بدقة أعلى بكثير من الفلاتر الكلمية التقليدية.

كم تكلفة تشغيل بوت تليجرام مع كلود AI شهرياً؟

Telegram Bot API مجاني تماماً بلا حدود. التكلفة الرئيسية هي Claude API: استخدام Claude Haiku لمئات آلاف الرسائل شهرياً يكلف بين 5 و25 دولاراً. إضافة خادم VPS بسيط بـ 5 دولارات وتكون التكلفة الإجمالية 10-30 دولار شهرياً لبوت يخدم آلاف المستخدمين بشكل مريح.

الخلاصة: ابدأ بسيطاً وطوّر تدريجياً

بوت تليجرام مدعوم بكلود AI ليس مشروعاً معقداً — يمكنك بناء نسخة عاملة في يوم واحد باتباع هذا الدليل. ابدأ بالكود الأساسي للرد على الرسائل، ثم أضف Inline Keyboards، ثم إدارة المجموعات، وأخيراً أتمتة القنوات. كل خطوة تبني على السابقة وتُضيف قيمة حقيقية. المهم ألا تنتظر الحل "المثالي" — البوت الذي يعمل اليوم خير من البوت المثالي الذي لم يُنجز بعد.

🧭 اكتشف المزيد

مواضيع مرتبطة من أقسام أخرى تُكمّل ما تعلمته

محتاج مساعدة احترافية؟

فريق A Plan جاهز يساعدك في بناء بوتات ذكية.

تواصل عبر واتساب