TGViewer
Channel Public Channel
| کانال ربات تلگرام |

| کانال ربات تلگرام |

@developixrobot

⭕️ کانال توسعه‌دهندگان ربات تلگرام دولوپیکس

💠 دولوپیکس | جامعه توسعه‌دهندگان ایرانی

💎 @Developix
🚀 Developix.ir

📌 پشتیبانی و تبلیغات:
@DevelopixSupport
Subscribers
1.24K
Photos
16
Videos
0
Links
34
Recent Posts 20 shown
Post #57 249
🔥 پروژه: پچ‌رایت؛ Playwright کم‌تر قابل‌ردیابی

پچ‌رایت یک فورک از کتابخانهٔ Playwright برای تست و اتومیشن وب است که روی «کم‌تر شناسایی شدن توسط سیستم‌های ضد‌بات» تمرکز دارد 🔍

برای ما توسعه‌دهندگان ربات تلگرام، این یعنی می‌توانی سناریوهای پیچیده مثل تست WebApp، پرداخت‌ها یا لاگین‌های چندمرحله‌ای را واقعی‌تر شبیه‌سازی کنی، بدون این‌که اسکریپتت سریعاً فلگ شود.

حتماً با رعایت قوانین سرویس‌ها و فقط برای تست و QA ازش استفاده شود. ارزش یک نگاه فنی را دارد ⚙️

⭐️ 4,623 ستاره

🔖 #TelegramBot #ربات #تلگرام #توسعه_ربات_تلگرام #Playwright

💎 @DevelopixRobot
  • 👍 4
Post #55 1.08K
🚀 ‏LaraGram Brain منتشر شد!

از این به بعد برای ساخت ربات‌های تلگرام با فریم‌ورک LaraGram، لازم نیست حتماً خودتون دست به کد بشید؛ یا حتی با توسعه ربات تلگرامی آشنا باشید!

کافیه ایده و توضیحات پروژه‌ای که می‌خواید رو به یک ایجنت هوش‌مصنوعی بدید و باقی کار رو به خودش بسپارید. 🤖

‏LaraGram Brain یک MCP Server برای فریم‌ورک LaraGram هست که مجموعه‌ای از ابزارها و اسکیل‌ها رو در اختیار ایجنت‌های هوش‌مصنوعی قرار می‌ده تا بتونن پروژه رو بهتر بشناسن، پیاده‌سازی کنن، تست بگیرن و حتی مشکلاتش رو بررسی کنن.

از جمله امکاناتش:
• اجرای متدهای تلگرام در محیط Sandbox بدون ارسال واقعی
• دسترسی به Schema و مستندات Telegram
• بررسی ساختار و Queryهای دیتابیس
• مشاهده Logهای برنامه
• جست‌وجو در مستندات LaraGram
•‏ Skillهای مربوط به Bot، MTProto، TMA و Web Pages

فرقی نمی‌کنه پروژه‌تون یه ربات ساده باشه یا یک پروژه پیچیده با MTProto و TMA؛ توضیحاتش رو به ایجنت بدید و اجازه بدید کار رو خودش انجام بده.

لینک پروژه‌ها:
🧩 LaraGram
🧩 Brain

🔖 #TelegramBot #ربات #تلگرام

💎 Channel: @DevelopixRobot
  • 👍 3
  • 👎 1
Post #54 493
خیلی وقت‌ها ربات لینک می‌فرستد، اما پیش‌نمایش بزرگ صفحه کل کل چت را شلوغ می‌کند 😅 مخصوصاً برای پیام‌های سیستمی یا دکمه‌دار.

با استفاده از پارامتر disable_web_page_preview در متد sendMessage می‌توان پیش‌نمایش را خاموش کرد تا چت تمیز و فشرده بماند ✅

مثال با Bot API مستقیم:
<code class="language-python">https://api.telegram.org/botTOKEN/sendMessage\
?chat_id=123456\
&text=Check%20this%20link:%20https://example.com\
&disable_web_page_preview=true</code>


مثال با کتابخانه python-telegram-bot:
<code class="language-python">await context.bot.send_message(
chat_id=update.effective_chat.id,
text="لینک مستندات: https://core.telegram.org/bots/api",
disable_web_page_preview=True,
)</code>


نکته‌ها ✨
• برای پیام‌های اطلاع‌رسانی، دکمه‌ای و لاگ‌ها، تقریباً همیشه گزینه بهتری است.
• برای لینک‌های محتوایی (مقاله، ویدئو) فقط در صورت نیاز خاموش شود تا کاربر پیش‌نمایش را از دست ندهد.

بار بعد که ربات لینک فرستاد و چت شلوغ شد، یک بار این گزینه را تست کن 😉

منبع رسمی: Telegram Bot API - sendMessage

🔖 #TelegramBot #ربات #تلگرام #Telegram_Bot #disable_web_page_preview #sendMessage #python_telegram_bot #UX

👤 Developix

💎 Channel: @DevelopixRobot
Post #53 505
💠 نسخه جدید کتابخانه GrammY منتشر شده است

🔸 ارتقا از نسخه 1.45.1 به 1.46.0

🔖 #grammy, #js, #bot, #release

💎 @DevelopixRobot
  • 👍 1
  • 🔥 1
Post #52 450
💠 نسخه جدید کتابخانه آیوگرام (Aiogram) منتشر شده است

🔸 ارتقا از نسخه 3.30.0 به 3.31.0

🔖 #aiogram, #bot, #python, #release

💎 @DevelopixRobot
  • 👍 1
Post #51 405
🔥 پروژه: ‏TikTok Live Connector برای ربات‌ها

کتابخانه Node.js ‏TikTok Live Connector این امکان را می‌دهد ایونت‌های لایو تیک‌تاک (کامنت، هدیه و غیره) را به‌صورت realtime بگیری.

برای توسعه‌دهنده‌ ربات تلگرام یعنی می‌توانی:
• سینک چت لایو تیک‌تاک با گروه تلگرام 🙂
• ساخت رباتی که براساس هدیه‌ها، پیام یا نوتیفیکیشن بفرستد

جزییات و نمونه‌کدها را این‌جا ببین:
GitHub پروژه

⭐️ 2,128 ستاره

🔖 #TelegramBot #ربات #تلگرام #توسعه‌دهندگان_ربات #ربات_تلگرام

💎 @DevelopixRobot
  • 👍 2
Post #50 501
کتابخانهٔ Telegraf یکی از محبوب‌ترین ابزارها برای ساخت ربات تلگرام با جاوااسکریپت روی Node.js است. روی Bot API خام سوار می‌شود و دردسر مدیریت requestها، انواع آپدیت و middleware را کم می‌کند. 🚀

چرا Telegraf؟
• ساخت سریع ربات بدون درگیر شدن با جزئیات HTTP
• پشتیبانی قوی از inline keyboard، reply markup، commandها و context
• معماری middleware شبیه Express برای مدیریت منظم منطق ربات
• پشتیبانی هم از long polling و هم webhook

نمونه‌کد سریع
npm install telegraf

const { Telegraf } = require('telegraf');
const bot = new Telegraf(process.env.BOT_TOKEN);

bot.start((ctx) => ctx.reply('سلام، ربات Telegraf اینجاست!'));
bot.hears('دکمه', (ctx) => {
ctx.reply('انتخاب کن', {
reply_markup: {
inline_keyboard: [[{ text: 'سایت', url: 'https://core.telegram.org' }]]
}
});
});

bot.launch();


برای ربات‌های واقعی، استفاده از middleware برای log، auth و rate limit بسیار کمک‌کننده است.

لینک‌ها:
مستندات رسمی Telegraf
GitHub پروژه

تجربهٔ ساخت ربات با Telegraf معمولاً لذت‌بخش و سریع است؛ امتحانش ارزش دارد. 😉

tags: Telegraf, Node.js, Telegram Bot, JavaScript

🔖 #TelegramBot #ربات #تلگرام #Telegraf #Node_js #Telegram_Bot #JavaScript

👤 Developix

💎 Channel: @DevelopixRobot
  • 👍 2
  • ❤ 1
Post #49 588
✏️ ویرایش پیام ربات به‌جای ارسال پیام‌های تکراری

خیلی وقت‌ها ربات برای «وضعیت پردازش»، «نتایج جستجو» یا «پیغام لودینگ» پشت سر هم پیام جدید می‌فرستد و چت را شلوغ می‌کند. یک ترفند ساده این است که به‌جای پیام‌های جدید، همان پیام قبلی را با editMessageText آپدیت کنی. 😉

✅ مزیت‌ها:
• چت تمیزتر و حرفه‌ای‌تر ✨
• مصرف کمتر quota و ترافیک
• تجربه کاربری خیلی روان‌تر

مثال با Python و python-telegram-bot:
from telegram import Update
from telegram.ext import ApplicationBuilder, CommandHandler, ContextTypes

async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):
msg = await update.message.reply_text("در حال پردازش...")
# ... کد پردازش ...
await msg.edit_text("✅ نتیجه آماده شد!")

app = ApplicationBuilder().token("YOUR_TOKEN").build()
app.add_handler(CommandHandler("start", start))
app.run_polling()


نکته 👇
برای ویرایش، باید message_id همان پیام قبلی را داشته باشی (در مثال بالا همون msg). اگر پیام قدیمی خیلی وقت پیش ارسال شده باشد یا کاربر آن را حذف کرده باشد، API خطا برمی‌گرداند؛ بهتر است خطا را لاگ و هندل کنی.

📚 داک رسمی:
EditMessageText - Telegram Bot API


🔖 #TelegramBot #ربات #تلگرام #Telegram_Bot #editMessageText #Python #UX #Chat_Cleanliness #Performance

👤 Developix

💎 Channel: @DevelopixRobot
Post #48 594

Forwarded from Developix Support

با Migration Boost هاست‌ایران، برای مهاجرت به سرور ابری دوباره هزینه ترافیک نده! 🚀

با خرید اولین سرور ابری غیرساعتی از **هاست‌ایران**، بسته ترافیک هدیه مهاجرت به‌صورت خودکار برای سرویس شما فعال می‌شود:

✅ حداقل ۱۰۰ گیگابایت ترافیک هدیه مهاجرت
✅ افزایش حجم هدیه متناسب با ظرفیت دیسک اولیه
✅ ترافیک آپلود رایگان
✅ بدون محدودیت زمانی

سرور ابری هاست‌ایران را راه‌اندازی کنید و بکاپ‌ها، فایل‌ها و پایگاه داده خود را بدون دغدغه هزینه‌های پنهان ترافیک منتقل کنید.

👇 مشاهده پلن‌های سرور ابری هاست‌ایران
hostiran.club/Migration
hostiran.club/Migration
Post #47 568
🚀 ربات سریع‌تر با استفاده از Webhook به‌جای getUpdates

خیلی از ربات‌ها هنوز با Polling و متد getUpdates کار می‌کنند و هر چند صد میلی‌ثانیه یک‌بار سر می‌زنند ببینند پیام جدیدی آمده یا نه. این کار هم تاخیر را بالا می‌برد، هم روی سرور و هم روی Telegram بار اضافه می‌اندازد.

راه بهتر توی Production استفاده از Webhook است؛ Telegram هر آپدیت را مستقیم به آدرس HTTPS سرور می‌فرستد، بدون Loop و Delay اضافه 👍

نمونه تنظیم Webhook با python-telegram-bot:

from telegram.ext import Application, CommandHandler

TOKEN = "YOUR_BOT_TOKEN"
app = Application.builder().token(TOKEN).build()

async def start(update, context):
await update.message.reply_text("سلام 👋")

app.add_handler(CommandHandler("start", start))

app.run_webhook(
listen="0.0.0.0",
port=8443,
url_path=TOKEN,
webhook_url=f"https://example.com/{TOKEN}"
)


نکته مهم 🔐: حتما از HTTPS معتبر استفاده شود و url_path را تصادفی و غیرقابل حدس انتخاب کن تا اسکن‌های ساده به ربات نرسند.

مرجع رسمی: Telegram Bot API – setWebhook

🔖 #TelegramBot #ربات #تلگرام #Telegram_Bot #Webhook #Performance #python_telegram_bot #Security

👤 Developix

💎 Channel: @DevelopixRobot
  • 👍 1
Post #46 531
💠 نسخه جدید کتابخانه آیوگرام (Aiogram) منتشر شده است

🔸 ارتقا از نسخه 3.29.1 به 3.30.0

🔖 #aiogram, #bot, #python, #release

💎 @DevelopixRobot
  • 👍 1
Post #45 484
💠 نسخه جدید کتابخانه GrammY منتشر شده است

🔸 ارتقا از نسخه 1.44.0 به 1.45.1

🔖 #grammy, #js, #bot, #release

💎 @DevelopixRobot
  • 👍 1
Post #44 1.71K
🧩 ورژن 4 فریم‌ورک LaraGram منتشر شد.

یکی از مهم‌ترین قابلیت‌های LaraGram 4، معرفی پکیج MTProto است؛ پکیجی که با هدف ساده‌سازی توسعه پروژه‌های مبتنی بر Telegram MTProto API طراحی شده است.

توسعه با MTProto معمولاً با چالش‌هایی مانند مدیریت Session، احراز هویت، نگهداری اتصال، دریافت Updateها، مدیریت Flood Wait و پیکربندی‌های پیچیده همراه است. در LaraGram تلاش شده تمام این پیچیدگی‌ها از مسیر توسعه‌دهنده حذف شود تا تجربه‌ای مشابه توسعه یک ربات معمولی، اما با قدرت کامل MTProto داشته باشید.

⚡️ شروع کار بدون دردسر با LaraGram Installer

برای اینکه حتی مرحله راه‌اندازی هم ساده باشد، LaraGram Installer تمام مراحل اولیه را برای شما انجام می‌دهد.

با استفاده از Installer، فرآیندهایی مانند:
- نصب LaraGram
- نصب و آماده‌سازی پکیج MTProto
- انجام کانفیگ‌های اولیه
- آماده‌سازی ساختار پروژه

به صورت خودکار انجام می‌شود.

بعد از نصب، کافی است Handlerهای موردنظر خود را تعریف کنید و منطق برنامه را بنویسید؛ بخش زیادی از کارهای مربوط به زیرساخت، اتصال و مدیریت سرویس توسط خود LaraGram انجام خواهد شد.

⚡️ قدرت گرفته از Surge و Swoole/OpenSwoole
‏MTProto در LaraGram بر پایه Surge و Swoole/OpenSwoole توسعه داده شده است؛ یعنی به جای اجرای سنتی PHP، از یک Runtime دائمی و Event-Driven استفاده می‌کند.

این معماری باعث می‌شود MTProto بتواند برای ارتباط‌های دائمی و پروژه‌های Real-Time عملکرد بسیار بهتری داشته باشد:

🚀 پردازش سریع‌تر Updateها
🔄 مدیریت همزمان اتصال‌ها
💾 مصرف بهینه‌تر منابع
⚡️ حذف سربار اجرای مجدد برنامه
📈 آمادگی برای پروژه‌های بزرگ و پرترافیک

🧠 تمام امکانات MTProto، آماده استفاده
در MTProto LaraGram بسیاری از قابلیت‌هایی که معمولاً نیاز به پیاده‌سازی دستی دارند، به صورت داخلی فراهم شده‌اند، به عنوان مثال شبیه سازی رفتار انسان، یا اعمال لیمیت‌های خودکار به صورت هوشمند.

در نتیجه، توسعه‌دهنده به جای درگیر شدن با جزئیات سطح پایین، روی ساخت قابلیت‌های اصلی پروژه تمرکز می‌کند.

نکته: به دلیل استفاده از Swoole/OpenSwoole، پکیج MTProto روی هاست‌های اشتراکی قابل اجرا نیست و برای استفاده از آن به یک VPS نیاز خواهید داشت.


‏🌐 MTProto + Web Routing؛ ساخت Telegram Client تحت وب

یکی از جذاب‌ترین بخش‌های LaraGram 4، ترکیب MTProto با Web Framework جدید LaraGram است.

ترکیب این قابلیت‌ها با MTProto به شما اجازه می‌دهد یک Telegram Web Client اختصاصی توسعه دهید؛ جایی که رابط کاربری از طریق سیستم وب LaraGram ساخته می‌شود و ارتباط مستقیم با تلگرام از طریق MTProto انجام می‌شود.

یعنی با یک اکوسیستم واحد می‌توانید:

‏Backend وب را مدیریت کنید
با Telegram API ارتباط داشته باشید
حساب‌های کاربری را مدیریت کنید
کلاینت‌ها و سرویس‌های اختصاصی تلگرامی بسازید

این تنها یکی از قابلیت های LaraGram است، پکیج Luna، یکی دیگر از آپدیت‌های بزرگ LaraGram برای توسعه مینی‌اپ ها با React/Vue/Svelte بدون درگیری با API نویسی، SPAs، یا InitData تلگرام است.

همچنین پکیج‌هایی برای توسعه با AI، ماینتورینگ ربات و... در حال توسعه هستند.

نسخه 4 آغاز مسیر جدید LaraGram است؛ مسیری که این پروژه را از یک فریم‌ورک ربات، به بستری کامل برای توسعه سرویس‌ها، کلاینت‌ها و اپلیکیشن‌های مبتنی بر تلگرام تبدیل می‌کند.

📚 مستندات کامل: https://laraxgram.github.io

⭐️ اگر LaraGram برای شما مفید است، خوشحال می‌شویم با معرفی پروژه و دادن Star در GitHub از توسعه آن حمایت کنید:

🔹 گیت‌هاب LaraGram
🔹 گیت‌هاب MTProto
🔹 گیت‌هاب Luna
  • 👍 1
Post #43 416
💠 نسخه جدید کتابخانه لاراگرام (Laragram) منتشر شده است

🔸 ارتقا از نسخه 3.3.2 به 4.0.3

🔖 #laragram, #bot, #php, #laravel, #release

💎 @DevelopixRobot
  • ❤ 1
  • 👍 1
Post #42 481
💠 نسخه جدید رابط توسعه ربات تلگرام (Telegram Bot API) منتشر شده است

🔸 ارتقا از نسخه 10.1 به 10.2

🔹 لیست تغییرات این نسخه:
- پشتیبانی از «پیام‌های غنی» با قالب‌بندی پیشرفته متن
- امکان استریم و ویرایش زنده پیام‌های غنی
- قابلیت «درخواست عضویت»‌ با متدها و فیلدهای جدید
- افزودن لینک و مدیای پیشرفته به نظرسنجی‌ها
- بهبودهای عمومی در ساختار پیام‌ها، جداول، لیست‌ها و …
- تغییرات جزئی دیگر در انواع و متدهای Bot API

🔖 #telegram_bot_api, #bot, #release

💎 @DevelopixRobot
  • 👍 3
Post #39 620
‏Command Pattern در معماری ربات تلگرام 🚀

یکی از الگوهای خیلی کاربردی برای تمیز نگه داشتن کد ربات، مخصوصاً وقتی تعداد دستورات زیاد می‌شود، Command Pattern است.

به‌جای اینکه داخل یک فایل بزرگ با کلی if/elif همهٔ دستورها را هندل کنیم، هر دستور را به‌صورت یک «Command» جداگانه پیاده‌سازی می‌کنیم. این کار:

✅ کد را خواناتر و قابل نگه‌داری‌تر می‌کند
✅ اضافه کردن دستور جدید را ساده و بدون دست‌کاری منطق قبلی می‌کند
✅ تست‌نویسی برای هر دستور را راحت‌تر می‌کند

ایدهٔ اصلی Command Pattern 🧠

هر دستور (مثلاً /start، /help، /stats) تبدیل می‌شود به یک کلاس با یک متد ثابت، مثلاً execute().

یک «Command Bus» یا «Dispatcher» فقط تشخیص می‌دهد کاربر چه دستوری داده و Command مناسب را صدا می‌زند؛ خودش منطق دستور را بلد نیست.

نمونهٔ ساده در ربات تلگرام (python-telegram-bot) 🐍

from telegram import Update
from telegram.ext import ApplicationBuilder, CommandHandler, ContextTypes

class BaseCommand:
async def execute(self, update: Update, context: ContextTypes.DEFAULT_TYPE):
raise NotImplementedError

class StartCommand(BaseCommand):
async def execute(self, update, context):
await update.message.reply_text("سلام 👋 خوش اومدی!")

class HelpCommand(BaseCommand):
async def execute(self, update, context):
await update.message.reply_text("لیست دستورات: /start, /help")

class CommandDispatcher:
def __init__(self):
self._commands = {
"start": StartCommand(),
"help": HelpCommand(),
}

async def handle(self, update, context):
name = update.message.text.lstrip("/").split()[0]
cmd = self._commands.get(name)
if cmd:
await cmd.execute(update, context)

dispatcher = CommandDispatcher()

async def entrypoint(update: Update, context: ContextTypes.DEFAULT_TYPE):
await dispatcher.handle(update, context)

app = ApplicationBuilder().token("TOKEN").build()
app.add_handler(CommandHandler(["start", "help"], entrypoint))
app.run_polling()


چند نکتهٔ عملی برای ربات‌های واقعی 🛠

• برای هر Command می‌توان وابستگی‌ها را تزریق کرد (Repository، Service، Logger) تا کلاس‌ها تمیز و تست‌پذیر بمانند.

• وقتی تعداد Command ها زیاد شد، می‌توان ثبت آن‌ها را به‌صورت داینامیک (مثلاً با اسکن ماژول‌ها) انجام داد تا دیگر یک دیکشنری بزرگ دستی نگه نداریم.

• در کنار Command Pattern، استفاده از Single Responsibility Principle کمک می‌کند منطق ربات از منطق زیرساخت (HTTP, DB, Cache) جدا بماند.

برای مطالعهٔ بیشتر دربارهٔ این الگو:
refactoring.guru/design-patterns/command

قدم‌به‌قدم که ربات‌تان بزرگ‌تر می‌شود، استفاده از Command Pattern کمک می‌کند معماری کد تمیز بماند و با خیال راحت فیچرهای جدید اضافه کنید ✨

🔖 #TelegramBot #ربات #تلگرام #Command_Pattern #Telegram_Bot #Clean_Code #Python #Design_Patterns #Software_Architecture

👤 Developix

💎 Channel: @DevelopixRobot
  • ❤ 5
  • 👎 1
Post #38 646
📌 ساخت منوی اینلاین حرفه‌ای در ربات تلگرام با Telegraf (Node.js)

اگر تا حالا رباتی دیدی که زیر هر پیام چند تا دکمه شیک اینلاین داره (مثلاً «خرید»، «اطلاعات بیشتر»، «بازگشت»)، دقیقاً همون چیزی رو می‌خوایم بسازیم 😎

تو این پست می‌ریم سراغ ساخت یک ربات Node.js با Telegraf که:

• یک دستور /start داره ✅
• زیر پیام، Inline Keyboard نشون می‌ده ✅
• روی هر دکمه کلیک بشه، بدون ارسال پیام جدید، فقط متن همون پیام رو آپدیت می‌کنه ✅

منبع اصلی این ایده از داکیومنت رسمی Telegraf هست:
telegraf.js.org - Inline Keyboards

برای شروع، فقط لازمه Node.js نصب باشه و یک Bot Token هم از @BotFather گرفته باشی.

۱️⃣ نصب Telegraf

داخل پوشه پروژه:
npm init -y
npm install telegraf


۲️⃣ یک ربات ساده با Inline Keyboard

فایل مثلاً bot.js:
const { Telegraf, Markup } = require('telegraf');

// BotFather توکن رباتت رو اینجا بذار
const bot = new Telegraf('YOUR_BOT_TOKEN_HERE');

// /start - نمایش منوی اینلاین
bot.start((ctx) => {
return ctx.reply(
'سلام 👋\nیک گزینه انتخاب کن:',
Markup.inlineKeyboard([
[
Markup.button.callback('📊 وضعیت ربات', 'status'),
Markup.button.callback('ℹ️ درباره', 'about'),
],
[
Markup.button.url('🌐 وب‌سایت رسمی', 'https://core.telegram.org/bots'),
],
])
);
});

// هندل کردن callbackهای اینلاین
bot.action('status', async (ctx) => {
await ctx.answerCbQuery(); // بستن لودینگ کوچک تلگرام
await ctx.editMessageText('✅ ربات آنلاین است و مشکلی ندارد.');
});

bot.action('about', async (ctx) => {
await ctx.answerCbQuery();
await ctx.editMessageText(
'این یک نمونه ربات ساده با Inline Keyboard است.\n' +
'با Telegraf می‌توانی ربات‌های خیلی حرفه‌ای‌تر بسازی 😉'
);
});

// اجرای ربات با Long Polling
bot.launch().then(() => {
console.log('Bot started...');
});

// برای shutdown تمیز (مخصوص سرورهای واقعی)
process.once('SIGINT', () => bot.stop('SIGINT'));
process.once('SIGTERM', () => bot.stop('SIGTERM'));


حالا فقط کافیه:
node bot.js

رو اجرا کنی و تو تلگرام به رباتت /start بفرستی. می‌بینی که دکمه‌ها زیر پیام ظاهر می‌شن و با کلیک روی هرکدوم، متن همون پیام آپدیت می‌شه؛ بدون این‌که چت شلوغ بشه ✨

نکات ریز ولی مهم 👇

• از ctx.answerCbQuery() استفاده کن تا اون لودینگ ریز روی دکمه گیر نکنه.
• برای دکمه‌هایی که باید به لینک بیرونی برن، از button.url استفاده کن.
• برای ساخت منوهای چندسطحی، می‌تونی داخل هر bot.action دوباره یک Inline Keyboard جدید بفرستی یا پیام رو با editMessageText و کیبورد جدید آپدیت کنی.

امتحانش کن، منوی اینلاین تقریباً تو هر ربات جدی‌ای لازمه و وقتی دستت بیفته، نصف راه UX خوب رو رفتی 🚀

🔖 #TelegramBot #ربات #تلگرام #Telegram_Bot #Node_js #Telegraf #Inline_Keyboard #Programming_Tutorial #Realtime_Bots

👤 Developix

💎 Channel: @DevelopixRobot
  • 👍 3
Post #37 638
💠 نسخه جدید کتابخانه GrammY منتشر شده است

🔸 ارتقا از نسخه 1.43.0 به 1.44.0

💎 @DevelopixRobot
  • 👍 3
Post #36 776
🎯 ریپلای تمیز توی ربات: همیشه از reply_to_message_id استفاده کن

وقتی ربات توی گروه‌ها شلوغ می‌شود، مهم است جواب هر کاربر دقیقاً زیر پیام خودش بیاید؛ مخصوصاً وقتی چند نفر همزمان از ربات استفاده می‌کنند. به‌جای این‌که فقط به chat تکیه شود، بهتر است همیشه از فیلد reply_to_message_id استفاده شود تا رشتهٔ گفتگو مرتب بماند. 😉

نمونه با Python و python-telegram-bot (v20+):

from telegram import Update
from telegram.ext import ApplicationBuilder, CommandHandler, ContextTypes

async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):
msg = update.effective_message
await msg.reply_text(
"سلام 👋\nدر چه کاری کمک می‌کنم؟",
reply_to_message_id=msg.message_id
)

app = ApplicationBuilder().token("YOUR_TOKEN").build()
app.add_handler(CommandHandler("start", start))
app.run_polling()


این کار توی گروه‌ها و سوپرگروه‌ها:

• 📌 جریان گفتگو را واضح نگه می‌دارد.
• 🚫 احتمال اشتباه یا سوتفاهم را کم می‌کند.
• 💬 مخصوصاً برای ربات‌های پشتیبانی، Quiz یا Ticket خیلی حیاتی است.

موقع ارسال پیام با sendMessage در Bot API خام هم کافی است همیشه reply_to_message_id را با message_id پیام کاربر ست کنی.

🔗 مستند رسمی: Telegram Bot API – sendMessage

🔖 #TelegramBot #ربات #تلگرام #Telegram_Bot #reply_to_message_id #python_telegram_bot #group_bots #conversation

👤 Developix

💎 Channel: @DevelopixRobot
  • 👍 1
  • 👎 1
Post #35 880
‏Idempotency در Webhook ربات تلگرام چیه؟ 🔁

یکی از مشکل‌های رایج تو ربات‌های تلگرام اینه که یه آپدیت چند بار پردازش می‌شه؛ مخصوصاً وقتی:

• سرور delay داره ⏳
• ngrok / proxy قطع و وصل می‌شه
• خودت retry برای request‌هات گذاشتی

اینجاست که مفهوم Idempotency نجاتت می‌ده؛ یعنی اجرای چندبارهٔ یه عملیات، اثر اضافه‌ای نسبت به بار اول نداشته باشه. ✅

در ربات تلگرام، بهترین candidate برای Idempotency همون update_id هر پیام یا callback هست.

ایدهٔ اصلی:

1️⃣ هر update_id رو فقط یه بار قبول کن.
2️⃣ اگر دوباره همون update_id رسید، به‌جای دوباره انجام دادن کار (مثلاً برداشت از کیف پول کاربر)، فقط نتیجهٔ قبلی رو برگردون یا بی‌صدا ignore کن.

یه پیاده‌سازی ساده با Python + Redis 🐍

import time
import redis
from flask import Flask, request

r = redis.Redis(host="localhost", port=6379, db=0)
app = Flask(__name__)

IDEMPOTENCY_TTL = 60 * 5 # 5 دقیقه

@app.post("/webhook")
def telegram_webhook():
update = request.get_json(force=True)
update_id = update.get("update_id")

if update_id is None:
return "ok" # ورودی نامعتبر، بی‌صدا رد می‌کنیم

cache_key = f"tg:update:{update_id}"

# اگر قبلاً پردازش شده، دوباره انجام نده
if r.exists(cache_key):
return "ok" # idempotent پاسخ

# قفل سبک برای این update
with r.lock(f"lock:{cache_key}", timeout=5):
if r.exists(cache_key):
return "ok"

handle_update(update)

# علامت‌گذاری به‌عنوان پردازش‌شده
r.setex(cache_key, IDEMPOTENCY_TTL, int(time.time()))

return "ok"


def handle_update(update: dict) -> None:
message = update.get("message", {})
text = message.get("text", "")
chat_id = message.get("chat", {}).get("id")

if text == "/start":
send_welcome(chat_id)


def send_welcome(chat_id: int) -> None:
# اینجا فراخوانی sendMessage به Bot API رو انجام بده
...


نکات مهم در عمل 🚀

• TTL مناسب بذار؛ معمولاً چند دقیقه برای update_id ها کافیه.

• تو عملیات حساس مثل پرداخت، حتماً Idempotency رو تا لایهٔ دیتابیس ادامه بده (مثلاً با unique index روی update_id یا invoice_id).

• اگر از getUpdates هم استفاده می‌کنی، باز همین منطق برای safety بیشتر مفیده.

• تو jobهای async یا queue‌هات (مثل Celery, RQ) هم update_id یا یه idempotency key اختصاصی حمل کن.

پیاده‌سازی درست Idempotency تو Webhook جلوی کلی باگ عجیبی مثل برداشت دوباره، ثبت تکراری سفارش و ارسال چندبارهٔ پیام رو می‌گیره و رباتت رو حسابی قابل‌اعتمادتر می‌کنه ✨

از همین امروز تو لایهٔ Webhook رباتت این الگو رو اضافه کن و ذهنت رو از ترس retryها خلاص کن. 😄

🔖 #TelegramBot #ربات #تلگرام #Idempotency #Telegram_Bot #Webhook #Python #Redis #Clean_Code #Robustness

👤 Developix

💎 Channel: @DevelopixRobot
  • 👍 3
Older posts →

About this channel

How can I read @developixrobot without a Telegram account?
TGViewer shows the public web preview Telegram publishes for | کانال ربات تلگرام |: recent posts, photos, videos and the subscriber count, with no app, login or account.
How many subscribers does | کانال ربات تلگرام | have?
| کانال ربات تلگرام | (@developixrobot) has 1.24K subscribers on Telegram, refreshed roughly every 30 minutes.
Does | کانال ربات تلگرام | know I viewed it here?
No. Public channel previews carry no viewer identity, and TGViewer has no accounts or tracking of what you look up.
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →