بناء بوت تليجرام ذكي بكلود AI
لماذا تليجرام؟ ولماذا كلود AI؟
تليجرام ليس مجرد تطبيق مراسلة — إنه منصة برمجية متكاملة يستخدمها أكثر من 900 مليون مستخدم حول العالم، ويحتضن ملايين المجموعات والقنوات التي تعتمد عليها الشركات والمجتمعات يومياً. ما يجعل تليجرام مختلفاً عن غيره هو Telegram Bot API المجاني تماماً بلا حدود، والذي يتيح لأي مطوّر بناء بوتات قادرة على التفاعل مع المستخدمين، وإدارة المجموعات، وأتمتة القنوات، وإرسال إشعارات مجدولة — كل ذلك بدون رسوم على عدد الرسائل.
حين تدمج هذه الإمكانية مع كلود AI من Anthropic، تحصل على بوت لا يردّ فقط على الأوامر المحددة مسبقاً، بل يفهم السياق ويحلل الطلبات المعقدة ويكتب إجابات طويلة ودقيقة بالعربية والإنجليزية. الفرق بين بوت تليجرام عادي وبوت مدعوم بكلود AI مثل الفرق بين آلة حاسبة وخبير مالي — الأول ينفذ أوامر، والثاني يفكر معك.
- إنشاء بوت تليجرام جديد عبر BotFather خطوة بخطوة
- إعداد بيئة Python وتثبيت المكتبات اللازمة
- كتابة كود الاستقبال والرد الذكي عبر Claude API
- بناء Inline Keyboards وقوائم تفاعلية
- تحديد الأوامر وإضافة لوحة تحكم /start
- إدارة المجموعات تلقائياً بالذكاء الاصطناعي
- أتمتة النشر في القنوات
- نشر البوت على سيرفر ووضعه في الإنتاج
الخطوة الأولى: إنشاء البوت عبر BotFather
BotFather هو البوت الرسمي من تليجرام الذي يمكّنك من إنشاء وإدارة بوتاتك الخاصة. لا تحتاج أي حساب مطوّر أو بطاقة ائتمان — فقط حساب تليجرام عادي.
افتح محادثة مع @BotFather
ابحث في تليجرام عن @BotFather (التحقق الأزرق ضروري) وابدأ المحادثة بالضغط على Start أو إرسال /start.
أرسل أمر /newbot
سيطلب منك BotFather اسماً للبوت (يظهر للمستخدمين مثل "MySmartBot") ثم username ينتهي بـ "bot" مثل "mysmartbot_bot". اختر username فريداً غير مستخدم.
احفظ الـ Bot Token بأمان
بعد إنشاء البوت يعطيك BotFather رسالة تحتوي على Bot Token بصيغة مثل 7654321987:AAHxyz... — هذا هو مفتاح البوت، احفظه في مكان آمن ولا تنشره أبداً.
أعدد الأوامر والوصف (اختياري الآن)
أرسل /setcommands لتحديد قائمة الأوامر المتاحة، و/setdescription لتحديد وصف البوت، و/setuserpic لرفع صورة البوت. يمكن تأجيل هذه الخطوات لما بعد الانتهاء من الكود.
إعداد بيئة التطوير
سنستخدم Python 3.10+ مع مكتبة python-telegram-bot v20+ التي تدعم async بشكل كامل، إلى جانب Anthropic Python SDK للتواصل مع كلود AI. هذا الثنائي هو المعيار الذي يعتمده المطوّرون في 2026 لسهولة الاستخدام وقوة الإمكانات.
# إنشاء بيئة افتراضية 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 في مجلد المشروع لتخزين المفاتيح السرية بعيداً عن الكود:
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 لضمان معالجة رسائل متعددة في وقت واحد دون تأخير.
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 هي أزرار تظهر أسفل رسائل البوت مباشرة، تتيح للمستخدمين التفاعل بنقرة واحدة بدلاً من كتابة أوامر. هذا يجعل البوت أكثر سهولة ويُقلل الأخطاء الإملائية في الأوامر. مثال عملي: قائمة اختيار تخصص المساعدة.
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 لبيانات أكثر تعقيداً.
بوت إدارة المجموعات الذكي
إدارة المجموعات الكبيرة على تليجرام مهمة استنزافية — حذف رسائل السبام، تحذير المخالفين، الرد على الأسئلة المتكررة. بوت مدعوم بكلود يحل هذه المشكلة تلقائياً ويُحرر المشرفين للتركيز على المحتوى الحقيقي.
الخطوات الأساسية لبوت إدارة المجموعات
أضف البوت للمجموعة وامنحه صلاحيات المشرف
من إعدادات المجموعة ← المشرفون ← إضافة مشرف ← ابحث عن اسم البوت. فعّل صلاحيات: حذف الرسائل، حظر المستخدمين، تثبيت الرسائل.
فعّل استقبال كل رسائل المجموعة
في BotFather أرسل /setprivacy ثم اختر DISABLE حتى يستقبل البوت كل رسائل المجموعة وليس فقط الأوامر المباشرة.
اكتب منطق التحليل والمعالجة
استخدم Claude لتحليل كل رسالة وتصنيفها: سبام، محتوى مسيء، إعلان غير مرخص، أو رسالة عادية — ثم نفّذ الإجراء المناسب تلقائياً.
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 للمهام التي تتطلب فهماً عميقاً مثل الإجابة على الأسئلة التقنية.
أتمتة القنوات — نشر المحتوى تلقائياً
القنوات على تليجرام تختلف عن المجموعات — المشتركون يستقبلون المحتوى فقط ولا يستطيعون الرد مباشرة. البوت يمكنه أن يكون مديراً للقناة ينشر مقالات ومنشورات مجدولة وتقارير يومية وتحليلات سوق أو أي محتوى تحدده — كل ذلك تلقائياً بدون تدخل بشري.
سيناريو عملي: قناة نشرة إخبارية يومية
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) |
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 (الأسهل للمبتدئين)
ارفع الكود على GitHub
أنشئ مستودعاً خاصاً ورفع ملفات البوت (بدون ملف .env بالطبع).
أنشئ مشروعاً في Railway
من railway.app اربط حسابك بـ GitHub واختر المستودع. Railway يكتشف Python تلقائياً ويبني المشروع.
أضف متغيرات البيئة
من Settings ← Variables أضف TELEGRAM_BOT_TOKEN وANTHROPIC_API_KEY بنفس القيم في ملف .env المحلي.
أضف ملف Procfile
أنشئ ملف Procfile بالمحتوى: worker: python bot.py حتى يعرف Railway كيف يشغّل التطبيق.
خيار 2: VPS مع Webhook (الأسرع للإنتاج)
Webhook أسرع من Polling لأن تليجرام يرسل التحديثات مباشرة لسيرفرك بدل أن يسألهم البوت كل ثانية. يتطلب دومين أو IP ثابت مع HTTPS.
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 نصائح ذهبية لبوت تليجرام احترافي
حدّد System Prompt بعناية
الـ System Prompt هو شخصية البوت — كلما كان أوضح ومخصصاً، كانت ردود كلود أكثر دقة وملاءمة. اكتب فيه مهمة البوت ونبرة الحديث والموضوعات المسموح بها.
استخدم Rate Limiting
حدّد عدداً أقصى للرسائل لكل مستخدم في الدقيقة (مثلاً 10 رسائل/دقيقة) لمنع إساءة الاستخدام وحماية ميزانية Claude API من الاستنزاف السريع.
أضف Typing Indicator دائماً
أرسل send_chat_action(action="typing") قبل كل رد لإظهار "يكتب..." — هذا يُحسّن تجربة المستخدم ويخبره أن البوت يعالج رسالته.
تعامل مع حد 4096 حرف
تليجرام يرفض الرسائل التي تتجاوز 4096 حرفاً. اكتب دالة تقسّم الردود الطويلة تلقائياً إلى أجزاء وترسلها بالتسلسل مع فاصل زمني قصير.
سجّل الأخطاء بـ Logging
لا تكتفِ بـ print() — استخدم Python logging بمستويات مختلفة (INFO, WARNING, ERROR) واحفظ السجلات في ملف. هذا يساعدك في تتبع المشكلات في الإنتاج.
اختبر بـ unit tests قبل النشر
اكتب اختبارات بسيطة لكل handler مع mock لـ Telegram API وClaude API. هذا يوفّر ساعات من debugging لاحقاً ويمنع الأخطاء في بيئة الإنتاج.
راقب التكلفة بـ Usage Alerts
فعّل تنبيهات الاستخدام في Anthropic Console وحدّد حداً أقصى شهرياً. تتبّع عدد الـ tokens في كل استجابة وسجّلها لتحليل التكلفة وتحسينها بمرور الوقت.
احتفظ بـ 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 مناسب للتطوير المحلي حيث يسأل السيرفر عن التحديثات كل ثوانٍ، وWebhook هو الأفضل للإنتاج حيث يرسل تليجرام التحديثات مباشرة لسيرفرك فور وصولها. Webhook يحتاج خادماً يعمل 24/7 مع HTTPS، وهو أسرع وأقل استهلاكاً للموارد بشكل واضح.
Python هي الأسهل والأكثر استخداماً — مكتبة python-telegram-bot تبسّط التعامل مع Telegram API بشكل كبير. تحتاج معرفة أساسية بـ Python وasync/await وكيفية استدعاء APIs الخارجية. المبتدئ الذي يعرف Python يستطيع بناء بوت بسيط في ساعتين اتباعاً لهذا الدليل.
كلود لا يتذكر المحادثات تلقائياً — كل استدعاء API مستقل. الحل هو تخزين سجل المحادثة لكل مستخدم في قاعدة بيانات (SQLite أو Redis) وإرساله مع كل طلب جديد ضمن messages array. يمكن تحديد نافذة ذاكرة مثل آخر 20 رسالة للتحكم في التكلفة دون فقدان السياق المهم.
نعم، بعد تعيين البوت مشرفاً في المجموعة يمكنه استقبال كل الرسائل وتحليلها بكلود، حذف الرسائل المخالفة، تحذير المستخدمين، وحظرهم مؤقتاً أو دائماً. كلود يساعد في تصنيف المحتوى وتحديد ما إذا كانت الرسالة مخالفة للقواعد بدقة أعلى بكثير من الفلاتر الكلمية التقليدية.
Telegram Bot API مجاني تماماً بلا حدود. التكلفة الرئيسية هي Claude API: استخدام Claude Haiku لمئات آلاف الرسائل شهرياً يكلف بين 5 و25 دولاراً. إضافة خادم VPS بسيط بـ 5 دولارات وتكون التكلفة الإجمالية 10-30 دولار شهرياً لبوت يخدم آلاف المستخدمين بشكل مريح.
بوت تليجرام مدعوم بكلود AI ليس مشروعاً معقداً — يمكنك بناء نسخة عاملة في يوم واحد باتباع هذا الدليل. ابدأ بالكود الأساسي للرد على الرسائل، ثم أضف Inline Keyboards، ثم إدارة المجموعات، وأخيراً أتمتة القنوات. كل خطوة تبني على السابقة وتُضيف قيمة حقيقية. المهم ألا تنتظر الحل "المثالي" — البوت الذي يعمل اليوم خير من البوت المثالي الذي لم يُنجز بعد.
🧭 اكتشف المزيد
مواضيع مرتبطة من أقسام أخرى تُكمّل ما تعلمته