مدل اصلی پیام در کتابخانه روبکا - دسترسی به اطلاعات پیام، ارسال پاسخ، ویرایش، حذف و کپی
| پارامتر | نوع | توضیحات |
|---|---|---|
| bot | Robot | نمونه ربات |
| chat_id | str | شناسه چت |
| message_id | str | شناسه پیام |
| sender_id | str | شناسه فرستنده |
| text | str | None | متن پیام |
| raw_data | dict | None | داده خام از سرور |
from rubka import Robot, Message
bot = Robot("TOKEN")
@bot.on_message()
async def handler(bot: Robot, message: Message):
print(message.chat_id)
print(message.message_id)
print(message.text)| فیلد | نوع | توضیحات |
|---|---|---|
| chat_id | str | شناسه چت |
| message_id | str | شناسه پیام |
| sender_id | str | شناسه فرستنده |
| time | int | زمان ارسال (timestamp) |
| is_edited | bool | آیا پیام ویرایش شده |
| sender_type | str | نوع فرستنده (User/Bot) |
| reply_to_message_id | str | None | شناسه پیام پاسخ داده شده |
| forwarded_from | ForwardedFrom | None | اطلاعات فوروارد |
| file | File | None | اطلاعات فایل |
| sticker | Sticker | None | اطلاعات استیکر |
| poll | Poll | None | اطلاعات نظرسنجی |
| location | Location | None | موقعیت مکانی |
| aux_data | AuxData | None | دادههای کمکی |
@bot.on_message()
async def handler(bot: Robot, message: Message):
if message.is_command:
await message.reply("این یک دستور است!")
if message.is_photo:
await message.reply("عکس دریافت شد!")
if message.is_private:
await message.reply("این پیام خصوصی است")
if message.is_pure_emoji:
await message.reply("فقط ایموجی ارسال کردی")| پراپرتی | نوع | توضیحات |
|---|---|---|
| text | str | متن پیام |
| emoji_count | int | تعداد ایموجیهای متن |
| message_type | str | نوع پیام (photo, video, text, ...) |
| meta_types | list | لیست انواع متادیتا |
@bot.on_message()
async def handler(bot: Robot, message: Message):
print(f"متن: {message.text}")
print(f"تعداد ایموجی: {message.emoji_count}")
print(f"نوع پیام: {message.message_type}")
print(f"انواع متادیتا: {message.meta_types}")| نام | نوع | توضیحات |
|---|---|---|
| text | str | متن پاسخ |
| delete_after | int | None | حذف خودکار پس از n ثانیه |
| parse_mode | Literal["HTML","Markdown"] | None | حالت فرمتبندی |
@bot.on_message(commands=["start"])
async def start(bot: Robot, message: Message):
# پاسخ ساده
await message.reply("سلام")
# پاسخ با حذف خودکار بعد از 5 ثانیه
msg = await message.reply("این پیام بعد از 5 ثانیه حذف میشود", delete_after=5)
# پاسخ با فرمت HTML
await message.reply("متن بولد شده", parse_mode="HTML")@bot.on_message()
async def handler(bot: Robot, message: Message):
await message.answer("پاسخ سریع")await message.reply_image("photo.jpg", text="کپشن عکس")await message.reply_file("document.pdf", text="فایل پیوست")await message.reply_video("video.mp4", text="ویدیو")await message.reply_music("song.mp3", text="آهنگ جدید")await message.reply_voice("voice.ogg")await message.reply_gif("animation.gif")await message.reply_location("35.6892", "51.3890")await message.reply_contact("علی", "رضایی", "09123456789")await message.reply_poll(
question="رنگ مورد علاقه شما؟",
options=["قرمز", "آبی", "سبز"],
type="Regular"
)await message.reply_sticker("sticker_id_here")keypad = {"rows": [[{"text": "دکمه 1"}]]}
await message.reply_keypad("متن پیام", keypad)from rubka.button import InlineBuilder
builder = InlineBuilder().row(
InlineBuilder().button_simple(id="btn1", text="دکمه 1")
).build()
await message.reply_inline("متن پیام", builder)| نام | نوع | توضیحات |
|---|---|---|
| to_chat_id | str | شناسه چت مقصد |
| message_id | str | None | شناسه پیام (اختیاری) |
@bot.on_message(commands=["copy"])
async def copy_command(bot: Robot, message: Message):
# کپی پیام به چت دیگر
await message.copy("target_chat_id")
# کپی با پاسخ به پیام خاص
await message.copy_message("target_chat_id", "message_id")@bot.on_message()
async def handler(bot: Robot, message: Message):
if message.text == "edit":
await message.edit("متن جدید ویرایش شده")@bot.on_message(commands=["del"])
async def delete_command(bot: Robot, message: Message):
await message.delete()
await message.reply("پیام حذف شد")@bot.on_message()
async def handler(bot: Robot, message: Message):
# دریافت نام فرستنده
name = await message.author_name
print(f"نام: {name}")
# دریافت نام کاربری
username = await message.username
print(f"یوزرنیم: {username}")
# دریافت اطلاعات کامل چت
info = await message.author_info
print(f"اطلاعات: {info}")from rubka import Robot, Message
bot = Robot("YOUR_TOKEN")
@bot.on_message()
async def handler(bot: Robot, message: Message):
# تشخیص نوع پیام
if message.is_command:
if message.text == "/start":
await message.reply("سلام! به ربات خوش آمدید")
elif message.is_photo:
await message.reply("عکس زیبایی دریافت کردم")
elif message.is_emoji:
await message.reply(f"{message.emoji_count} تا ایموجی فرستادی")
elif message.has_link:
await message.reply("لینک در پیام شما وجود دارد")
else:
# پاسخ با کیبورد شیشهای
from rubka.button import InlineBuilder
builder = InlineBuilder().row(
InlineBuilder().button_simple(id="info", text="اطلاعات")
).build()
await message.reply_inline("چی میخوای؟", builder)
@bot.on_callback(button_id="info")
async def info_callback(bot, query):
await query.reply("این یک دکمه شیشهای است")
bot.run()