بوت تليجرام بالذكاء الاصطناعي مع Claude أو GPT أو Gemini
أنشئ بوت تليجرام من BotFather، واجعله يجيب بنماذج Claude وGPT وGemini عبر واجهة متوافقة مع OpenAI، مع كود Python مُختبَر وحساب التكلفة.
لبناء بوت تليجرام بالذكاء الاصطناعي، أنشئ البوت في @BotFather واحصل على رمزه، ثم شغّل ملف Python قصيرًا يرسل كل رسالة إلى نموذج محادثة ويعيد الإجابة إلى المحادثة. وبمفتاح من 5abeer تصل مكتبة OpenAI إلى نماذج Claude وGPT وGemini بأقل من أسعارها الرسمية، ولا تدفع إلا ثمن التوكنات التي تستهلكها كل إجابة.
ما الذي تحتاج إليه لبناء بوت تليجرام بالذكاء الاصطناعي؟#
- حساب تليجرام، لإنشاء البوت في @BotFather والحصول على رمزه.
- مفتاح API من 5abeer لمزوّد النموذج الذي سيستخدمه البوت. يستخدم الكود أدناه النموذج الافتراضي
claude-sonnet-5.5، لذلك يحتاج إلى مفتاح Claude. الخطوات في أنشئ مفتاحًا، والأساسيات في ما هو مفتاح API وكيف تحصل على واحد لـ Claude وGPT وGemini. - Python 3.10 أو أحدث، مع حزمتين: مكتبة
openaiالرسمية ومكتبةrequests. - جهاز أو خادم يبقى يعمل طوال تشغيل البوت.
كيف تحصل على رمز البوت من BotFather؟#
ابدأ بوتًا جديدًا#
افتح محادثة مع @BotFather في تليجرام وأرسل
/newbot.اختر اسمًا واسم مستخدم#
الاسم هو ما يراه الناس في المحادثة. أما اسم المستخدم فهو عنوان البوت، كما في
t.me/username. ويجب أن يتراوح طوله بين 5 و32 حرفًا، وأن يتكون من حروف لاتينية وأرقام وشرطات سفلية فقط، وأن ينتهي بـbot، مثلsupport_helper_bot.انسخ الرمز#
يرد BotFather برمز البوت (token). ونصيحة تليجرام واضحة: "Keep your token secure and store it safely, it can be used by anyone to control your bot"، أي احفظ الرمز في مكان آمن، لأن من يملكه يستطيع التحكم في البوت. وإذا تسرّب الرمز، فأرسل
/tokenإلى BotFather لتوليد رمز جديد.
كيف تربط البوت بـ Claude أو GPT أو Gemini؟#
تدعم 5abeer صيغة OpenAI Chat Completions، لذلك يستخدم البوت مكتبة OpenAI الرسمية بتغييرين فقط: عنوان الأساس والمفتاح. ويصل الكود نفسه إلى نماذج Claude وGPT وGemini، ولا يتغير إلا معرّف النموذج ومزوّد المفتاح. والانتقال من أي خدمة أخرى متوافقة مع OpenAI يتم بالتغيير نفسه، كما في بديل OpenRouter بأسعار أقل من الرسمي.
https://api.5abeer.ai/v1Authorization: Bearer <KEY>https://api.5abeer.aix-api-key: <KEY>https://api.5abeer.ai/v1betax-goog-api-key: <KEY>قبل تشغيل البوت، أرسل طلبًا تجريبيًا واحدًا بمفتاحك. فإذا جاء الرد، فالمفتاح والنموذج جاهزان. والصيغة مشروحة في Chat Completions.
curl --request POST "https://api.5abeer.ai/v1/chat/completions" \
--header "Authorization: Bearer $KHABEER_API_KEY" \
--header "Content-Type: application/json" \
--data '{"model":"claude-sonnet-5.5","messages":[{"role":"user","content":"اكتب فكرة منتج في سطر واحد"}]}'{
"id": "chatcmpl-9f2",
"object": "chat.completion",
"model": "claude-sonnet-5.5",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "مرحبًا! كيف أساعدك اليوم؟"
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 21,
"completion_tokens": 12,
"total_tokens": 33
}
}المفتاح يُقرأ من متغير البيئة KHABEER_API_KEY، فلا يظهر في الكود.
كيف يبدو البوت كاملًا؟#
البوت كله ملف Python واحد. يعتمد على الاستطلاع الطويل (long polling)، فلا يحتاج إلى نطاق أو شهادة أو منفذ مفتوح. ولا يجيب إلا المحادثات التي تسمح بها.
import os
import time
import requests
from openai import OpenAI
TELEGRAM = "https://api.telegram.org/bot" + os.environ["TELEGRAM_BOT_TOKEN"]
client = OpenAI(api_key=os.environ["KHABEER_API_KEY"], base_url="https://api.5abeer.ai/v1")
MODEL = os.environ.get("BOT_MODEL", "claude-sonnet-5.5")
# Chat ids that may use the bot, comma-separated. "*" opens it to everyone.
ALLOWED = {x.strip() for x in os.environ.get("ALLOWED_CHAT_IDS", "").split(",") if x.strip()}
SYSTEM = "You are a helpful assistant. Answer briefly, in plain text, in the user's language."
GREETING = "Hi! Send me a question"
SORRY = "Sorry, I could not answer right now. Try again in a minute"
MAX_HISTORY = 10 # messages kept per chat: the last 5 questions and answers
history = {}
def telegram(method, **params):
r = requests.post(f"{TELEGRAM}/{method}", json=params, timeout=60)
r.raise_for_status()
return r.json()["result"]
def send(chat_id, text):
# Telegram accepts up to 4096 characters per message, so long answers go in parts.
for i in range(0, len(text), 4000):
telegram("sendMessage", chat_id=chat_id, text=text[i : i + 4000])
def handle(message):
chat_id = message["chat"]["id"]
text = message.get("text")
if not text:
return
if "*" not in ALLOWED and str(chat_id) not in ALLOWED:
print(f"ignored chat {chat_id}: add it to ALLOWED_CHAT_IDS")
return
if text.startswith(("/start", "/reset")):
history.pop(chat_id, None)
send(chat_id, GREETING)
return
telegram("sendChatAction", chat_id=chat_id, action="typing")
past = history.get(chat_id, [])
question = {"role": "user", "content": text}
try:
reply = client.chat.completions.create(
model=MODEL,
messages=[{"role": "system", "content": SYSTEM}, *past, question],
max_tokens=1000,
)
answer = (reply.choices[0].message.content or "").strip()
except Exception as error:
print(f"model error: {error}")
answer = ""
if not answer:
send(chat_id, SORRY)
return
history[chat_id] = (past + [question, {"role": "assistant", "content": answer}])[-MAX_HISTORY:]
send(chat_id, answer)
def main():
offset = 0
while True:
try:
updates = telegram("getUpdates", offset=offset, timeout=50, allowed_updates=["message"])
except requests.RequestException as error:
print(f"telegram error: {error}")
time.sleep(5)
continue
for update in updates:
offset = update["update_id"] + 1
if "message" in update:
try:
handle(update["message"])
except Exception as error:
print(f"update {update['update_id']} failed: {error}")
if __name__ == "__main__":
main()اختبرنا هذا الملف في 2026-11-01 على Python 3.11 مع مكتبة openai بالإصدارين 2.32 و3.42، أمام بدائل محلية لتليجرام وللواجهة، برمز ومفتاح وهميين.
كيف تشغّله وتمنع الغرباء من استخدامه؟#
يستطيع أي شخص يعرف اسم مستخدم البوت أن يراسله، وكل إجابة تُدفع من رصيدك. لذلك لا يجيب البوت إلا معرّفات المحادثات المدرجة في ALLOWED_CHAT_IDS، ولا يجيب أحدًا إذا كانت القائمة فارغة.
pip install openai requests
export TELEGRAM_BOT_TOKEN="YOUR_BOT_TOKEN"
export KHABEER_API_KEY="YOUR_5ABEER_API_KEY"
python3 bot.pypip install openai requests
$env:TELEGRAM_BOT_TOKEN="YOUR_BOT_TOKEN"
$env:KHABEER_API_KEY="YOUR_5ABEER_API_KEY"
python bot.py- شغّل البوت وأرسل إليه أي رسالة من حسابك في تليجرام.
- تطبع الطرفية السطر
ignored chat 123456789: add it to ALLOWED_CHAT_IDSوفيه معرّف محادثتك الحقيقي. - أوقف البوت، واضبط
ALLOWED_CHAT_IDSعلى هذا المعرّف بالطريقة نفسها التي ضبطت بها المفتاح، ثم شغّله من جديد.
افصل بين المعرّفات بفاصلة إنجليزية ,. والقيمة * تفتح البوت للجميع، لذلك ضع حد إنفاق على المفتاح أولًا.
كيف يعمل الكود؟#
- الاستطلاع الطويل: ينتظر
getUpdatesالرسائل الجديدة مدة تصل إلى 50 ثانية. ويخبرoffsetتليجرام بالتحديثات التي عولجت، فلا يُجاب عن أي منها مرتين. - حالة الكتابة: يعرضها تليجرام مدة تصل إلى 5 ثوانٍ، أو حتى يصل الرد.
- الذاكرة: يحتفظ البوت بآخر 10 رسائل في كل محادثة ويرسلها مع كل سؤال، فتعمل أسئلة المتابعة. ويمحو
/startأو/resetذاكرة المحادثة، وكذلك إعادة التشغيل. - الإجابات الطويلة: يقبل تليجرام 4096 حرفًا في الرسالة، لذلك يرسل البوت الإجابة الأطول على أجزاء من 4000 حرف.
- النص العادي: لا يضبط البوت
parse_mode، ويطلب موجّه النظام نصًا عاديًا، لذلك نادرًا ما تظهر رموز Markdown في الإجابات. - الأخطاء: تعيد المكتبة المحاولة مرتين من تلقاء نفسها عند تجاوز حد المعدل أو انتهاء المهلة أو أخطاء الخادم. وإذا فشل الطلب بعد ذلك، يسجّل البوت الخطأ ويرسل اعتذارًا قصيرًا بدلًا من أن يتوقف.
- يحدّد
max_tokens=1000طول الإجابة في نماذج Claude وGemini، وتتجاهله نماذج GPT، كما في المعاملات.
كيف تُبقي البوت يعمل؟#
لا يحتاج الاستطلاع الطويل إلا إلى اتصالات صادرة، فيكفيه أي جهاز يبقى يعمل: خادم سحابي صغير أو خادم منزلي أو حاوية. شغّله تحت مدير خدمات مثل systemd، أو اضبط للحاوية سياسة إعادة تشغيل، ليعود البوت بعد أي عطل أو إعادة تشغيل للجهاز.
شغّل نسخة واحدة لكل رمز، لأن نسختين تستطلعان البوت نفسه تتنافسان على الرسائل نفسها. وإذا توقف البوت مدة، يحتفظ تليجرام بالتحديثات التي لم تُسلَّم مدة تصل إلى 24 ساعة، ويلحق بها البوت عند عودته.
والطريقة الأخرى لاستقبال الرسائل هي webhook: يرسل تليجرام كل تحديث إلى عنوان HTTPS الخاص بك. اضبطه بـ setWebhook على المنفذ 443 أو 80 أو 88 أو 8443. وأضف secret_token وتحقّق من الترويسة X-Telegram-Bot-Api-Secret-Token في كل طلب. وما دام webhook مضبوطًا لا يعمل getUpdates، ويعيدك deleteWebhook إلى الاستطلاع.
ما الحدود التي يضعها تليجرام؟#
Telegram Bot API، الإصدار 10.3، راجعناه في 2026-11-01:
| الحد | القيمة |
|---|---|
| النص في الرسالة الواحدة | من 1 إلى 4096 حرفًا |
| الرسائل إلى محادثة واحدة | تجنّب أكثر من رسالة في الثانية؛ الدفعات الكثيفة تنتهي بأخطاء 429 |
| الرسائل إلى مجموعة واحدة | لا أكثر من 20 رسالة في الدقيقة |
| الرسائل إلى مستخدمين كثيرين | نحو 30 رسالة في الثانية، ما لم تدفع مقابل بث أسرع |
| الملفات التي ينزّلها البوت | حتى 20 ميجابايت |
| الملفات التي يرسلها البوت | حتى 50 ميجابايت |
| التحديثات التي لم تُسلَّم | تُحفظ مدة تصل إلى 24 ساعة |
وحد المجموعات هو الأهم لبوت الذكاء الاصطناعي، فالإجابة الطويلة التي تُرسل على ثلاثة أجزاء تُحسب ثلاث رسائل.
كم يكلّف بوت تليجرام بالذكاء الاصطناعي؟#
لا يتقاضى تليجرام نفسه شيئًا عن رسائل البوت العادية. وتقول أسئلته الشائعة إن "by default, bots are able to message their users at no cost"، أي إن البوتات تراسل مستخدميها دون تكلفة افتراضيًا. ولا يتقاضى نجوم تليجرام (Telegram Stars) إلا عن البث المدفوع فوق المعدل العادي. فالتكلفة إذن هي الخادم وتوكنات النموذج.
يرسل كل سؤال موجّه النظام وذاكرة المحادثة والرسالة الجديدة. وفي هذا المثال، يجيب البوت عن 3000 سؤال في الشهر، بنحو 1000 توكن إدخال و250 توكن إخراج لكل سؤال:
3 مليون توكن إدخال و750 ألف توكن إخراج
السعر الرسمي من صفحة المزوّد، بتاريخ 19 أكتوبر 2026.
وهذا سعر التوكن في النموذج الافتراضي:
السعر الرسمي من صفحة المزوّد، بتاريخ 19 أكتوبر 2026.
ولتخفض التكلفة، اختر نموذجًا أصغر من صفحة النماذج واستخدم مفتاحًا لمزوّد ذلك النموذج، أو خفّض MAX_HISTORY أو max_tokens. ويمكنك مقارنة المزوّدين في صفحة الـ API وصفحة Claude API، وأسعار الباقات في صفحة الأسعار.
خصّص للبوت مفتاحًا خاصًا بحد إنفاق، كما في تحكّم في كل مفتاح. وعندما يبلغ المفتاح حده، تفشل الطلبات بالخطأ API_KEY_QUOTA_EXHAUSTED ويرسل البوت اعتذاره، فيتوقف الإنفاق عند الحد الذي وضعته.
كيف تحمي رمز البوت والمفتاح؟#
- احفظ الاثنين في متغيرات البيئة، ولا تكتبهما في الكود ولا ترفعهما إلى مستودع.
- استخدم مفتاحًا منفصلًا للبوت، بحد إنفاق، ومع قائمة عناوين IP مسموح بها إذا كان للخادم عنوان ثابت. التفاصيل في تحكّم في كل مفتاح.
- أبقِ
ALLOWED_CHAT_IDSقصيرة ما لم يكن البوت عامًا. - إذا تسرّب رمز البوت، فولّد رمزًا جديدًا بـ
/tokenفي BotFather. وإذا تسرّب مفتاح API، فعطّله وأنشئ مفتاحًا جديدًا.
أسئلة شائعة#
هل يتقاضى تليجرام مالًا عن رسائل البوت؟#
لا عن الرسائل العادية. يتقاضى تليجرام النجوم فقط عن البث المدفوع فوق المعدل العادي، فتدفع أنت ثمن توكنات النموذج والخادم.
هل يستطيع البوت استخدام GPT أو Gemini بدلًا من Claude؟#
نعم. اضبط BOT_MODEL على معرّف نموذج من صفحة النماذج، واستخدم مفتاحًا لمزوّد ذلك النموذج. فكل مفتاح يغطي مزوّدًا واحدًا، واستدعاء نموذج GPT بمفتاح Claude يعيد الخطأ MODEL_PLATFORM_NOT_ALLOWED.
هل يتذكر البوت المحادثة؟#
يتذكر آخر 10 رسائل في كل محادثة ما دام يعمل. ويمحوها /reset، وكذلك إعادة التشغيل. ولتبقى الذاكرة بعد إعادة التشغيل، احفظ history في ملف أو قاعدة بيانات.
هل يعمل في المجموعات؟#
نعم، بعد إضافة معرّف المجموعة إلى ALLOWED_CHAT_IDS. ووضع الخصوصية مفعّل افتراضيًا: يرى البوت في المجموعة الأوامر الموجّهة إليه والردود على رسائله، لا كل الرسائل. أما البوت الذي يُضاف مشرفًا فيرى كل الرسائل. ولتغيير وضع الخصوصية، استخدم /setprivacy في BotFather، ثم أزل البوت من المجموعة وأضفه من جديد. وفي المجموعة يتشارك كل الأعضاء ذاكرة واحدة.
ماذا يحدث عندما ينفد رصيدي؟#
تفشل الطلبات بالخطأ INSUFFICIENT_BALANCE، ويرد البوت باعتذاره حتى تشحن رصيدك. ويظل يعمل، فيعود إلى الإجابة عندما يعود الرصيد.
كيف أدفع ثمن الـ API؟#
تشحن رصيدك في خبير بأي طريقة من طرق الدفع، وتُخصم طلبات البوت من هذا الرصيد.
هل 5abeer جزء من تليجرام أو OpenAI أو Anthropic أو Google؟#
لا. 5abeer خدمة مستقلة لا تتبع أيًّا منها.
المصادر#
راجعناها في 2026-11-01:
- Telegram Bot API (الإصدار 10.3): طول الرسالة و
getUpdatesوsetWebhookوأحجام الملفات - Telegram Bots FAQ: حدود الإرسال وتكلفة البث
- Telegram Bot Features: BotFather وأسماء المستخدمين والرموز ووضع الخصوصية
ابدأ#
أنشئ مفتاح Claude، وضعه في KHABEER_API_KEY، ثم شغّل البوت.
أدلة ذات صلة
- ما هو مفتاح API وكيف تحصل على واحد لـ Claude وGPT وGeminiما وظيفة مفتاح API للذكاء الاصطناعي، وأين تنشئه لدى Anthropic وOpenAI وGoogle، وكم يكلّف استخدامه، وكيف تحميه.
- بديل OpenRouter بأسعار أقل من الرسميكيف يحاسب OpenRouter على النماذج، وما الرسوم التي ينشرها، ومتى يكون الأرخص لك واجهة تبيع Claude وGPT وGemini بأقل من سعرها الرسمي.
- كيف تدفع ثمن OpenAI أو Claude API من مصر دون بطاقة دوليةلماذا تُرفض البطاقة المصرية عند الدفع لـ OpenAI وAnthropic، وكل طرق الدفع المتاحة من مصر، ومنها شحن رصيد API بالجنيه من محفظة أو InstaPay.
جاهز للبدء؟
اختر باقة تشغّل التطبيقات الرسمية، أو أنشئ مفتاح API تستخدمه من الكود الخاص بك.