پرش به مطلب اصلی

کلاس Inline – کانتکست مدیریت رویدادها

کلاس Inline نمایان‌گر context مربوط به پیام‌های اینلاین (inline) دریافت‌شده از روبیکاست. این کلاس به‌صورت خودکار توسط rubika هنگام دریافت رویداد "inline" ساخته شده و به هندلر پاس داده می‌شود.


فیلدها

ویژگینوعتوضیحات
sender_idstringآیدی کاربری که پیام را ارسال کرده
textstringمتن پیام
fileFile?فایل ضمیمه شده (در صورت وجود)
locationLocation?موقعیت جغرافیایی ارسال‌شده (در صورت وجود)
aux_dataAuxData?داده‌های اضافی (مثل اطلاعات پرداخت، دکمه فشرده‌شده و...)
message_idstringشناسه یکتا برای پیام
chat_idstringشناسه چتی که پیام در آن ارسال شده
storeRecord<string, any>فضای ذخیره‌سازی موقتی برای اطلاعات سفارشی در طول هندل
botBotدسترسی مستقیم به نمونه ربات برای فراخوانی متدهای سطح پایین

متدهای پاسخ‌دهی (Reply Methods)

تمامی این متدها به‌صورت خودکار به پیام کاربر Reply می‌دهند (پاسخ متصل).

reply(text, ...options)

ارسال پیام متنی ساده به عنوان پاسخ.

await ctx.reply("سلام! پیام شما دریافت شد.");

replyImage(file, text? , ...options)

ارسال عکس همراه با کپشن.

await ctx.replyImage("path/to/file");

replyVideo(file, text? , ...options)

ارسال ویدیو همراه با کپشن.

await ctx.replyVideo("path/to/file", "این یک ویدیو است.");

replyGif(file, text? , ...options)

ارسال گیف همراه با کپشن.

await ctx.replyGif("path/to/file");

replySticker(sticker_id, ...options)

ارسال استیکر با شناسه اختصاصی.

await ctx.replySticker("sticker_12345");

replyMusic / replyVoice(file, text? , ...options)

ارسال فایل صوتی (موزیک) یا ویس (پیام صوتی).

await ctx.replyMusic("path/to/file", "این یک آهنگ است.");
await ctx.replyVoice("path/to/file");

replyFile(file, text? , ...options)

ارسال هر نوع فایل عمومی (سند، PDF، ZIP و...).

await ctx.replyFile("path/to/file");

replyLocation(latitude, longitude, ...options)

ارسال موقعیت مکانی روی نقشه.

await ctx.replyLocation("35.6997", "51.3380"); // تهران

replyContact(firstName, lastName, phone, ...options)

ارسال کارت تماس (Contact).

await ctx.replyContact("هادی", "رستمی", "989123456789");

replyPoll(question, options, auto_delete?)

ارسال نظرسنجی (Poll) به چت.

await ctx.replyPoll("کدام فریم‌ورک بهتر است؟", ["React", "Vue", "Svelte"]);

⚠ نکته: تمام متدهای بالا از پارامترهای مشترکی مثل chat_keypad (دکمه‌های شیشه‌ای کیبورد)، inline_keypad (دکمه‌های زیر پیام)، disable_notification (بی‌صدا ارسال کردن) و auto_delete (حذف خودکار پس از زمان مشخص) پشتیبانی می‌کنند.

متدهای مدیریت پیام و چت


forward(to_chat_id: string)

فوروارد کردن پیام فعلی به چت دیگر.

await ctx.forward("b0..."); // ارسال به چت ادمین

delete(message_id?)

حذف پیام (پیش‌فرض: پیامی که ربات به آن پاسخ می‌دهد).

await ctx.delete(); // حذف پیام فعلی
await ctx.delete("message_id"); // حذف پیام دیگر

editMessage(text?, inline_keypad?)

ویرایش متن یا کیبورد پیام ارسالی ربات.

await ctx.editMessage("✅ متن ویرایش شد!", myInlineKeypad);

استفاده

import Bot from "rubika";

const bot = new Bot("YOUR_TOKEN");

bot.on("inline", async (ctx) => {
await ctx.reply("درخواست شما دریافت شد.");
});

bot.run();

نکته حرفه‌ای: متد reply و سایر متدهای مشابه، به‌صورت هوشمند تشخیص می‌دهند که آیا پیام ورودی دارای message_id معتبر است یا خیر. اگر پیام نامعتبر باشد، به‌جای کرش کردن، خطا را از طریق bot.logger ثبت می‌کنند که باعث پایداری بیشتر ربات در محیط Production می‌شود.