diff --git a/LICENSE b/LICENSE index 71b8454..4284be0 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2023 balepy +Copyright (c) 2026 balepy Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/docs.html b/docs.html deleted file mode 100644 index 8dcc5f8..0000000 --- a/docs.html +++ /dev/null @@ -1,177 +0,0 @@ - - - - - - Documents - - - - - -
- -
-
-
-

ارسال پیام

-

برای ارسال پیام سورس زیر را کپی کنید و توضیحات پایین رو بخونید.
در خط اول از کتابخونه بله پای کلاس کلاینت رو ایمپورت میکنیم.
در خط دوم یک متغیر دلخواه به اسم بات ساختم و کلاس کلاینت رو بهش اختصاص دادم و پارامتر اجباری این کلاس شناسه بات هستش که از بات فادر بله میتونید بگیریدش.
در خط سوم از متد ارسال پیام استفاده کردیم که این متد در مجموع ۴ تا پارامتر دارد ولی ۲ تا از آنها اجباری هست.
پارامتر های اجباری: چت آیدی شخص مورد نظر - محتوای پیام ارسالی
پارامتر سوم: برای ساخت کیبورد ها استفاده میشود که روش ساخت آن هم گفته میشود.
پارامتر چهارم: در صورتی که دوست دارید پیام ارسالیتون ریپلای زده بشه روی پیام مورد نظر میتونید از این پارامتر استفاده کنید.

-
-            from balepy import Client
bot = Client("AUTH")
bot.send_message(chat_id , text ,reply_markup , reply_to_message_id)
-
-
- -
-

ویرایش پیام


-

برای ویرایش پیام متنی که قبلا از طریق بات ارسال کرده‌اید می‌توانید از این سرویس استفاده کنید. یک مثال ساده را در زیر مشاهده میکنید.

-
-            from balepy import Client
bot = Client("AUTH")
bot,edit_message_text(chat_id , message_id , text , reply_markup)
-
-
- -
-

حذف پیام

-

برای حذف پیامی که قبلا از طریق بات ارسال کرده‌اید می‌توانید از این سرویس استفاده کنید. یک مثال ساده در زیر نشان داده شده است

-
-            from balepy import Client
bot = Client("AUTH")
bot.delete_message(chat_id , message_id)
-
-
- -
-

دریافت آپدیت ها

-

این سرویس برای گرفتن آپدیت‌ پیام‌های رسیده از طرف کاربر برای بازو استفاده می شود. در زیر یک نمونه از درخواست آپدیت نشان داده شده است.

-
-            from balepy import Client
bot = Client("AUTH")
bot.get_updates()
-
-
- -
-

تنظیم وب هوک

-

از این سرویس استفاده میشود برای تنظیم وب هوک و دریافت آپدیت پیام های رسیده از طرف کاربر از طریق http

-
-            from balepy import Client
bot = Client("AUTH")
bot.set_webhook(url)
-
-
- -
-

حذف وب هوک

-

برای حذف وب هوک تنظیم شده برای بات از این سرویس استفاده میشود.

-
-            from balepy import Client
bot = Client("AUTH")
bot.delete_webhook
-
-
- -
-

دریافت اطلاعات بات

-

از طریق این سرویس می توانید اطلاعات پایه ای بات را بدست بیاورید فقط با داشتن توکن بات!

-
-            from balepy import Client
bot = Client("AUTH")
bot,get_me()
-
-
- -
-

ارسال عکس

-

این متد برای ارسال عکس استفاده میشود.
شما به ۳ روش میتونید عکس ارسال کنید.
۱- ارسال عکس از سیستم
۲- ارسال عکس از طریق لینک آن
۳- ارسال عکس با استفاده از آیدی پس از آپلود عکس بر روی سرور بله

-
-            from balepy import Client
bot = Client("AUTH")
bot.send_photo(chat_id , photo , caption , reply_to_message_id)
-
-
- -
-

ارسال موزیک

-

این سرویس برای ارسال فایل های صوتی استفاده می‌شود. لازم به ذکر است محدودیت ارسال فایل صوتی برای بات ۱۰۰ مگابایت هست که ممکن است در آینده تغییر کند

-
-            from balepy import Client
bot = Client("AUTH")
bot.send_audio(chat_id , audio , caption , duration , title , reply_to_message_id)
-
-
- -
-

ارسال سند

-

این سرویس برای ارسال انواع فایل می‌تواند استفاده شود که دارای محدودیت حجم ۵۰ مگابایت برای هر فایل است که ممکن است در آینده تغییر کند.

-
-            from balepy import Client
bot = Client("AUTH")
bot.send_document(chat_id , document , caption , reply_to_message_id)
-
-
- -
-

ارسال ویدیو

-

این سرویس برای ارسال فایل‌های ویدیویی استفاده می‌شود که دارای محدودیت حجم ۵۰ مگابایت برای هر فایل است که ممکن است در آینده تغییر کند.

-
-            from balepy import Client
bot = Client("AUTH")
bot.send_video(chat_id , video , duration , width , height , caption , reply_to_message_id)
-
-
- -
-

ارسال پیام صوتی

-

برای ارسال پیام صوتی استفاده می شود و دارای محدودیت ۵۰ مگابایت برای هر پیام است که ممکن است در آینده تغییر کند.

-
-            from balepy import Client
bot = Client("AUTH")
bot.send_voice(chat_id , voice , caption , duration , reply_to_message_id
-
-
- -
-

ارسال لوکیشن(موقعیت جغرافیایی)

-

برای ارسال موقعیت جغرافیایی روی نقشه استفاده می شود.

-
-            from balepy import Client
bot = Client("AUTH")
bot.send_location(chat_id , latitude , longitude , reply_to_message_id)
-
-
- -
-

ارسال مخاطب

-

برای ارسال مخاطب استفاده می شود.

-
-            from balepy import Client
bot = Client("AUTH")
bot.send_contact(chat_id , phone_number , first_name , last_name , reply_to_message_id)
-
-
- -
-

دریافت فایل

-

برای دریافت فایل میتونید از متد زیر استفاده کنید.

-
-            from balepy import Client
bot = Client("AUTH")
bot.get_file(file_id)
-
-
- -
-

دریافت چت

-

برای دریافت چت میتونید از متد زیر استفاده کنید.

-
-            from balepy import Client
bot = Client("AUTH")
bot.get_chat(chat_id)
-
-
- -
-

دریافت ادمین ها

-

از این سرویس می توان برای نمایش ادمین های یک گروه یا کانال استفاده نمود

-
-            from balepy import Client
bot = Client("AUTH")
bot.get_chat_administrators(chat_id)
-
-
- -
-

دریافت تعداد اعضا

-

از این سرویس می توان برای نمایش تعداد اعضای یک گروه یا کانال استفاده نمود

-
-            from balepy import Client
bot = Client('AUTH')
bot.get_chat_members_count(chat_id)
-
-
- -
-

وضعیت اعضا

-

این سرویس وضعیت اعضای یک گروه یا کانال را مشخص میکند

-
-            from balepy import Client
bot = Client('AUTH')
bot.get_chat_member(chat_id , user_id)
-
-
- -
-

درخواست پول

-

برای ارسال پیام درخواست پول میتوانید از این سرویس استفاده کنید و می توانید از ۳ روش برای دریافت پول استفاده کنید.
1- شماره کارت
2- شماره درگاه و شماره پذیرنده
3- شماره کیف پول بله

-
-            from balepy import Client
bot = Client('AUTH')
bot.send_invoice(chat_id , title , description , provider_token , prices)
-
-
-
- - \ No newline at end of file diff --git a/fonts/mvboli.ttf b/fonts/mvboli.ttf deleted file mode 100644 index c27bad8..0000000 Binary files a/fonts/mvboli.ttf and /dev/null differ diff --git a/fonts/ubuntu.ttf b/fonts/ubuntu.ttf deleted file mode 100644 index 45a038b..0000000 Binary files a/fonts/ubuntu.ttf and /dev/null differ diff --git a/fonts/vazir.ttf b/fonts/vazir.ttf deleted file mode 100644 index 2088d0c..0000000 Binary files a/fonts/vazir.ttf and /dev/null differ diff --git a/fonts/vazir_black.ttf b/fonts/vazir_black.ttf deleted file mode 100644 index 74f227e..0000000 Binary files a/fonts/vazir_black.ttf and /dev/null differ diff --git a/index.html b/index.html index d7576da..2898946 100644 --- a/index.html +++ b/index.html @@ -1,140 +1,2290 @@ - - - - - - - balepy + + +Balepy — مستندات کتابخانه + + - - - -
-
-
-
-

ساخت باتِ بله

-
- با زبان پایتون و -
-
- کتابخانه بله پای -
-

با کتابخانه بله پای و زبان برنامه نویسی پایتون توهم بات خودتو طراحی کن!

- - دیدن مستندات -
- profile -
-
-
- -
-
-
-
-
-
-
- -
-

اکر دوست داری به گروه تلگراممون اضافه بشی و راجب کتابخونه کلی حرف بزنی از دکمه ی زیر استفاده کن

- GAP -
-
-
- -
-
-
-
- -
-

اگر میخوای از کتابخونه استفاده کنی ولی بلد نیستی پس بزن روی دکمه زیر و داکیومنت رو کامل بخون

- دیدن مستندات -
-
-
-
-
-
-
- -
-
-
-
- -

مستندات

-
-
-

به قسمت داکیومنت خوش اومدید
شما میتونید با استفاده از دکمه های زیر از متد خود استفاده کنید!
توجه: همیشه قبل از استفاده کتابخونه رو با دستور زیر آپدیت کنید!

pip install -U balepy

-
- - -
-
- - -
-
-
-
- background -
-
-

- درباره من -

-

سلام دوست خوبه من!
خوشحالم که از کتابخانه من جهت ساخت بات بله استفاده میکنی.
برای دیدن بیوگرافی من میتونی به صفحه گیت هابم که لینکشو پایین صفحه گذاشتم استفاده کنی (:
و اگر در سایت یا داکیومنت مشکلی دیدید میتونید به تلگرام من پیام بدید(لینکش آخر صفحه)

- - خواندن داکیومنت - -
-
-
-
- -
-
-
-

ما را در شبکه های اجتماعی دنبال کنید!

- - Telegram - - GitHub -
- -
- - - + + +
+
+
+
+ + + + + + + + + +
+ + +
+
Python Library for Bale Messenger
+

balepy

+

کتابخانه‌ای قدرتمند و async برای ساخت ربات‌های Bale Messenger — با رابطی الهام‌گرفته از Pyrogram

+
+ pip install -U balepy + کپی +
+
+ ✓ Async / Await + ✓ v1.5.1 + Python 3.9+ + MIT License +
+ +
+ + +
+ + +

نصب کتابخانه

+

با یک دستور ساده آخرین نسخه balepy را نصب کنید.

+
+
bash
+
# نصب آخرین نسخه
+pip install -U balepy
+
+# نصب از GitHub
+pip install git+https://github.com/mamdmehrabi/balepy.git
+
+
+
💡
+
برای رنگ‌آمیزی خروجی در ترمینال، می‌توانید colorama را هم نصب کنید: pip install colorama
+
+
+ + +
+ + +

اولین ربات

+

با چند خط کد یک ربات echo ساده بسازید.

+
+
python
+
from balepy import Client, filters
+
+bot = Client("MyBot", "TOKEN")
+
+@bot.on_message(filters.command("start"))
+async def start_handler(message):
+    await message.reply("سلام! ربات شروع شد 🌿")
+
+@bot.on_message(filters.text)
+async def echo(message):
+    await message.reply(message.text)
+
+bot.run()
+
+ +

ربات با Callback Query

+
+
python
+
from balepy import Client, filters
+from balepy.types import InlineKeyboardMarkup, InlineKeyboardButton
+
+bot = Client("ButtonBot", "TOKEN")
+
+@bot.on_message(filters.command("menu"))
+async def menu(message):
+    keyboard = InlineKeyboardMarkup([
+        [InlineKeyboardButton("گزینه ۱", callback_data="opt1")],
+        [InlineKeyboardButton("گزینه ۲", callback_data="opt2")],
+    ])
+    await bot.send_message(message.chat_id, "انتخاب کن:", reply_markup=keyboard)
+
+@bot.on_callback_query(filters.callback_data("opt1"))
+async def on_opt1(callback):
+    await bot.anwser_callback_query(callback.id, text="گزینه اول انتخاب شد!")
+
+bot.run()
+
+
+ + +
+ + +

کلاس Client

+

کلاس اصلی برای تمام عملیات ربات. تمام متدها از این کلاس در دسترس هستند.

+ +
+
class Client
+
+ Client(name: str, bot_token: str, **kwargs) +
+ + + + + + + + + + + +
پارامترتایپاجباریتوضیح
namestrنام ربات (فقط برای نمایش)
bot_tokenstrتوکن ربات از BaleBot
wallet_tokenOptional[str]توکن wallet برای پرداخت
timeoutOptional[int]20timeout درخواست‌های HTTP
max_retryOptional[int]3تعداد تلاش مجدد در خطا
base_urlOptional[str]آدرس سفارشی API
proxiesOptional[str]آدرس پروکسی
+
+
+ + +
+ + +

اجرا و چرخه حیات

+
+
+
run() sync
+
ربات را با long polling اجرا می‌کند. مناسب برای اسکریپت‌های ساده.
+
بدون پارامتر
+
+
+
start() async
+
شروع polling برای استفاده در event loop موجود.
+
بدون پارامتر
+
+
+
get_file_url() sync
+
آدرس مستقیم دانلود فایل را می‌سازد.
+
file_path: str
+
+
+
download_file() async
+
فایل را با file_id دانلود می‌کند و tuple برمی‌گرداند.
+
file_id: str
+
+
+
+
python
+
# استفاده در داخل event loop
+import asyncio
+
+async def main():
+    await bot.start()
+
+asyncio.run(main())
+
+
+ + +
+ + +

Middleware

+

قبل از رسیدن آپدیت به هندلر، منطق اجرا کنید. با برگرداندن False می‌توانید پردازش را متوقف کنید.

+
+
python
+
# middleware ساده برای لاگ
+async def logging_middleware(client, update):
+    print(f"Update received: {update}")
+    return True  # ادامه پردازش
+
+# middleware برای فیلتر کاربر بلاک شده
+async def block_filter(client, update):
+    blocked_users = [123456]
+    if update.message and update.message.from_user.id in blocked_users:
+        return False  # توقف پردازش
+
+bot.use(logging_middleware)
+bot.use(block_filter)
+
+
+ + +
+ + +

send_message

+

ارسال پیام متنی به یک چت.

+
+
send_message async
+
dict
+ + + + + + + + + +
پارامترتایپاجباریتوضیح
chat_idUnion[int, str]آیدی چت یا username
textstrمتن پیام
parse_modeOptional[str]HTML یا Markdown
reply_to_message_idOptional[int]آیدی پیام برای ریپلای
reply_markupOptional[dict]کیبورد / دکمه‌ها
+
+
+
python
+
await bot.send_message(
+    chat_id=123456789,
+    text="<b>سلام!</b> این یک پیام تستی است.",
+    parse_mode="HTML"
+)
+
+
+ + +
+ + +

send_photo

+
+
send_photo async
+
dict
+ + + + + + + + + + +
پارامترتایپاجباریتوضیح
chat_idUnion[int, str]آیدی چت
photostrfile_id یا URL تصویر
captionOptional[str]توضیح زیر تصویر
parse_modeOptional[str]فرمت caption
reply_to_message_idOptional[int]ریپلای به پیام
reply_markupOptional[dict]کیبورد
+
+
+
python
+
await bot.send_photo(
+    chat_id=message.chat_id,
+    photo="https://example.com/image.jpg",
+    caption="عکس زیبا 🌿"
+)
+
+
+ + +
+ + +

send_audio

+
+
send_audio async
+
dict
+ + + + + + + + + + + + +
پارامترتایپاجباریتوضیح
chat_idUnion[int, str]آیدی چت
audiostrfile_id یا URL فایل صوتی
captionOptional[str]توضیح
durationOptional[int]مدت زمان (ثانیه)
performerOptional[str]نام خواننده
titleOptional[str]عنوان آهنگ
reply_to_message_idOptional[int]ریپلای
reply_markupOptional[dict]کیبورد
+
+
+ + +
+ + +

send_video

+
+
📹
+
پارامترهای این متد مشابه send_audio هستند با اضافه‌شدن width، height و duration.
+
+
+
python
+
await bot.send_video(
+    chat_id=message.chat_id,
+    video="file_id_here",
+    caption="ویدیو",
+    width=1280,
+    height=720,
+    duration=60
+)
+
+
+ + +
+ + +

send_document

+
+
python
+
await bot.send_document(
+    chat_id=message.chat_id,
+    document="file_id_or_url",
+    caption="فایل PDF",
+    file_name="document.pdf"
+)
+
+
+ + +
+ + +

send_animation / send_voice / send_sticker

+
+
+
send_animation async
+
ارسال GIF یا انیمیشن.
+
+ chat_id + animation + caption +
+
+
+
send_voice async
+
ارسال پیام صوتی (فرمت OGG).
+
+ chat_id + voice + duration +
+
+
+
send_sticker async
+
ارسال استیکر با file_id.
+
+ chat_id + sticker +
+
+
+
send_video_note async
+
ارسال ویدیو نوت (دایره‌ای).
+
+ chat_id + video_note + duration + length +
+
+
+
+ + +
+ + +

send_location / send_contact / send_dice / send_venue

+
+
+
send_location async
+
ارسال موقعیت جغرافیایی.
+
+ chat_id + latitude: float + longitude: float +
+
+
+
send_contact async
+
ارسال کارت تماس.
+
+ chat_id + phone_number + first_name + last_name +
+
+
+
send_dice async
+
ارسال تاس انیمیشنی.
+
+ chat_id + emoji +
+
+
+
send_venue async
+
ارسال مکان با نام و آدرس.
+
+ chat_id + latitude + longitude + title + address +
+
+
+
+ + +
+ + +

send_media_group

+

ارسال چند رسانه به صورت آلبوم.

+
+
python
+
from balepy.types import InputMediaPhoto
+
+await bot.send_media_group(
+    chat_id=message.chat_id,
+    media=[
+        InputMediaPhoto("file_id_1", caption="تصویر اول"),
+        InputMediaPhoto("file_id_2"),
+    ]
+)
+
+
+ + +
+ + +

forward_message / copy_message / delete_message

+
+
+
forward_message async
+
فوروارد پیام از چتی به چت دیگر.
+
+ chat_id + from_chat_id + message_id +
+
+
+
copy_message async
+
کپی پیام بدون نشانه‌ی فوروارد.
+
+ chat_id + from_chat_id + message_id + caption +
+
+
+
delete_message async
+
حذف یک پیام از چت.
+
+ chat_id + message_id +
+
+
+
+ + +
+ + +

ویرایش پیام

+
+
+
edit_message_text async
+
ویرایش متن یک پیام.
+
+ text + chat_id + message_id + parse_mode +
+
+
+
edit_message_caption async
+
ویرایش caption رسانه.
+
+ chat_id + message_id + caption +
+
+
+
edit_message_reply_markup async
+
ویرایش کیبورد پیام.
+
+ chat_id + message_id + reply_markup +
+
+
+
+ + +
+ + +

پین کردن پیام

+
+
+
pin async
+
پین کردن پیام در چت.
+
+ chat_id + message_id + disable_notification +
+
+
+
unpin async
+
آنپین کردن پیام مشخص.
+
+ chat_id + message_id +
+
+
+
unpin_all_messages async
+
آنپین کردن تمام پیام‌ها.
+
+ chat_id +
+
+
+
+ + +
+ + +

Callback Query

+
+
anwser_callback_query async
+
dict
+ + + + + + + + + +
پارامترتایپاجباریتوضیح
callback_query_idstrآیدی callback
textOptional[str]متن نوتیفیکیشن
show_alertboolFalseنمایش به صورت alert
urlOptional[str]URL برای باز کردن
cache_timeOptional[int]مدت cache به ثانیه
+
+
+
python
+
@bot.on_callback_query()
+async def handle_callback(callback):
+    await bot.anwser_callback_query(
+        callback_query_id=callback.id,
+        text="✅ دریافت شد",
+        show_alert=True
+    )
+
+
+ + +
+ + +

دریافت و دانلود فایل

+
+
+
get_file async
+
اطلاعات فایل را بر اساس file_id برمی‌گرداند.
+
file_id: str
+
+
+
get_file_url sync
+
آدرس مستقیم دانلود فایل را می‌سازد.
+
file_path: str
+
+
+
download_file async
+
tuple از (file_path, url) برمی‌گرداند.
+
file_id: str
+
+
+
+
python
+
# دریافت اطلاعات فایل
+file_obj = await bot.get_file(message.document.file_id)
+url = bot.get_file_url(file_obj.file_path)
+
+# دانلود مستقیم
+file_path, download_url = await bot.download_file(file_id)
+
+
+ + +
+ + +

اطلاعات ربات و کاربر

+
+
+
get_me async
+
اطلاعات ربات جاری را برمی‌گرداند.
+
User
+
+
+
log_out async
+
از سرور خارج می‌شود.
+
dict
+
+
+
get_user_profile_photos async
+
عکس‌های پروفایل کاربر را برمی‌گرداند.
+
+ user_id + offset + limit +
+
+
+
+ + +
+ + +

get_chat / get_user

+
+
+
get_chat async
+
اطلاعات کامل چت را برمی‌گرداند.
+
chat_id
+
ChatFullInfo
+
+
+
get_user async
+
اطلاعات کاربر را با user_id برمی‌گرداند.
+
user_id
+
ChatFullInfo
+
+
+
+ + +
+ + +

مدیریت اعضای چت

+
+
+
get_chat_administrators async
+
لیست ادمین‌های چت.
+
chat_id
+
list[ChatMember]
+
+
+
get_chat_member async
+
اطلاعات یک عضو خاص.
+
+ chat_id + user_id +
+
+
+
get_chat_members_count async
+
تعداد اعضای چت.
+
chat_id
+
+
+
ban_chat_member async
+
بن کردن عضو.
+
+ chat_id + user_id + until_date + revoke_messages +
+
+
+
unban_chat_member async
+
آنبن کردن عضو.
+
+ chat_id + user_id + only_if_banned +
+
+
+
promote_chat_member async
+
ارتقا دادن عضو به ادمین.
+
+ chat_id + user_id + can_delete_messages + can_pin_messages +
+
+
+
restrict_chat_member async
+
محدود کردن دسترسی عضو.
+
+ chat_id + user_id + permissions: ChatPermissions +
+
+
+
leave_chat async
+
ربات از چت خارج می‌شود.
+
chat_id
+
+
+
invite_to_chat async
+
دعوت کاربر به چت.
+
+ chat_id + user_id +
+
+
+
approve_chat_join_request async
+
تأیید درخواست عضویت.
+
+ chat_id + user_id +
+
+
+
decline_chat_join_request async
+
رد درخواست عضویت.
+
+ chat_id + user_id +
+
+
+
+ + +
+ + +

تنظیمات چت

+
+
+
set_chat_title async
+
تغییر عنوان چت.
+
chat_idtitle
+
+
+
set_chat_description async
+
تغییر توضیحات چت.
+
chat_iddescription
+
+
+
set_chat_photo async
+
تغییر عکس چت.
+
chat_idphoto
+
+
+
delete_chat_photo async
+
حذف عکس چت.
+
chat_id
+
+
+
set_chat_permissions async
+
تنظیم مجوزهای پیش‌فرض.
+
chat_idpermissions: ChatPermissions
+
+
+
set_chat_administrator_custom_title async
+
عنوان سفارشی برای ادمین.
+
chat_iduser_idcustom_title
+
+
+
+ + + + + +
+ + +

دستورات ربات

+
+
+
set_my_commands async
+
تنظیم لیست دستورات ربات.
+
commands: list[BotCommand]
+
+
+
get_my_commands async
+
دریافت لیست دستورات فعلی.
+
list[BotCommand]
+
+
+
delete_my_commands async
+
حذف همه دستورات ربات.
+
بدون پارامتر
+
+
+
+
python
+
from balepy.types import BotCommand
+
+await bot.set_my_commands([
+    BotCommand("start", "شروع ربات"),
+    BotCommand("help", "راهنما"),
+    BotCommand("menu", "منوی اصلی"),
+])
+
+
+ + +
+ + +

سیستم پرداخت

+

با تنظیم wallet_token در Client می‌توانید فاکتور بفرستید و پرداخت‌ها را مدیریت کنید.

+
+
⚠️
+
توکن تست: WALLET-TEST-1111111111111111 — در production از توکن واقعی استفاده کنید. برای pre_checkout_query باید در ۱۰ ثانیه پاسخ دهید.
+
+ +
+
send_invoice async
+
dict
+ + + + + + + + + + + + + +
پارامترتایپاجباریتوضیح
chat_idUnion[int, str]آیدی چت
titlestrعنوان فاکتور
descriptionstrتوضیح فاکتور
payloadstrداده داخلی (برای شناسایی سفارش)
priceslist[LabeledPrice]لیست قیمت‌ها
photo_urlOptional[str]URL تصویر محصول
need_nameOptional[bool]درخواست نام
need_phone_numberOptional[bool]درخواست شماره
is_flexibleOptional[bool]قیمت قابل تغییر
+
+ +
+
python
+
from balepy import Client
+from balepy.types import LabeledPrice
+
+bot = Client("PayBot", "TOKEN", wallet_token="WALLET_TOKEN")
+
+@bot.on_message(filters.command("buy"))
+async def buy(message):
+    await bot.send_invoice(
+        chat_id=message.chat_id,
+        title="اشتراک ماهانه",
+        description="۳۰ روز دسترسی کامل",
+        payload="subscription_monthly",
+        prices=[LabeledPrice("اشتراک", 50000)],
+        need_phone_number=True
+    )
+
+@bot.on_pre_checkout_query
+async def checkout(query):
+    await bot.answer_pre_checkout_query(query.id, ok=True)
+
+@bot.on_successful_payment
+async def payment_done(message):
+    await message.reply("✅ پرداخت موفق!")
+
+ +

answer_pre_checkout_query

+ + + + + + + +
پارامترتایپاجباریتوضیح
pre_checkout_query_idstrآیدی query
okboolTrueتأیید یا رد پرداخت
error_messageOptional[str]پیام خطا در صورت رد
+
+ + +
+ + +

مدیریت استیکر

+
+
+
get_sticker_set async
+
اطلاعات پک استیکر را برمی‌گرداند.
+
name: str
+
StickerSet
+
+
+
upload_sticker_file async
+
آپلود فایل استیکر جدید.
+
user_idpng_sticker
+
+
+
create_new_sticker_set async
+
ایجاد پک استیکر جدید.
+
+ user_id + name + title + emojis +
+
+
+
add_sticker_to_set async
+
افزودن استیکر به پک.
+
+ user_id + name + emojis +
+
+
+
set_sticker_position_in_set async
+
تغییر موقعیت استیکر در پک.
+
+ sticker + position: int +
+
+
+
delete_sticker_from_set async
+
حذف استیکر از پک.
+
sticker
+
+
+
+ + +
+ + +

دریافت آپدیت‌ها

+
+
+
get_updates async
+
دریافت آپدیت‌ها با long polling.
+
+ offset: int = -1 + limit: int = 100 + timeout + allowed_updates +
+
+
+
set_webhook async
+
تنظیم Webhook برای دریافت آپدیت.
+
+ url: str + max_connections + allowed_updates +
+
+
+
get_webhook_info async
+
اطلاعات Webhook فعلی.
+
WebHookInfo
+
+
+
delete_webhook async
+
حذف Webhook و بازگشت به polling.
+
بدون پارامتر
+
+
+
+ + +
+ + +

فیلترهای آماده

+

فیلترهای singleton که نیاز به instantiate ندارند.

+ +

فیلترهای نوع محتوا

+
+
filters.text
+
filters.photo
+
filters.video
+
filters.audio
+
filters.voice
+
filters.document
+
filters.sticker
+
filters.animation
+
filters.contact
+
filters.location
+
filters.dice
+
filters.invoice
+
filters.successful_payment
+
filters.video_note
+
filters.venue
+
filters.caption
+
filters.media
+
+ +

فیلترهای چت

+
+
filters.private
+
filters.group
+
filters.channel
+
+ +

فیلترهای رویداد

+
+
filters.reply
+
filters.forwarded
+
filters.pinned_message
+
filters.new_chat_members
+
filters.left_chat_member
+
filters.bot
+
filters.all
+
+ +

فیلترهای تابعی

+
+
+
filters.command(commands, prefixes="/")
+
فیلتر دستورات مانند /start یا /help. می‌توان list داد.
+
+ commands: str | list + prefixes: str = "/" +
+
+
+
filters.regex(pattern, flags=0)
+
فیلتر با الگوی regex روی text یا caption.
+
+ pattern: str + flags: int +
+
+
+
filters.text_match(keywords, case_sensitive=False)
+
فیلتر بر اساس وجود کلمه کلیدی در متن.
+
+ keywords: str | list + case_sensitive +
+
+
+
filters.user(user_ids)
+
فیلتر بر اساس user_id فرستنده.
+
user_ids: int | list[int]
+
+
+
filters.chat(chat_ids)
+
فیلتر بر اساس chat_id.
+
chat_ids: int | list[int]
+
+
+
filters.callback_data(pattern)
+
فیلتر callback query با wildcard (*) پشتیبانی می‌کند.
+
pattern: str | list
+
+
+
+ + +
+ + +

ترکیب فیلترها

+

با عملگرهای &، | و ~ فیلترها را ترکیب کنید.

+
+
python
+
# AND — پیام متنی در چت خصوصی
+@bot.on_message(filters.text & filters.private)
+async def private_text(message): ...
+
+# OR — عکس یا ویدیو
+@bot.on_message(filters.photo | filters.video)
+async def media_handler(message): ...
+
+# NOT — هر پیامی که از ربات نباشد
+@bot.on_message(~filters.bot)
+async def human_only(message): ...
+
+# ترکیب پیچیده
+@bot.on_message(
+    (filters.text | filters.caption) &
+    filters.group &
+    ~filters.bot
+)
+async def group_text(message): ...
+
+
+ + +
+ + +

فیلتر سفارشی

+

با filters.create() فیلتر کاملاً سفارشی بسازید — sync یا async.

+
+
python
+
# فیلتر sync
+admin_filter = filters.create(lambda msg: msg.from_user.id in [123, 456])
+
+# فیلتر async (با دسترسی به دیتابیس)
+async def is_premium(message):
+    return await db.is_premium_user(message.from_user.id)
+
+premium_filter = filters.create(is_premium)
+
+@bot.on_message(premium_filter & filters.text)
+async def premium_only(message):
+    await message.reply("✨ محتوای ویژه کاربران Premium")
+
+
+ + +
+ + +

Handler Classes

+

علاوه بر decorator، می‌توانید با bot.add_handler() هندلر اضافه کنید.

+
+
+
MessageHandler
+
هندل پیام‌های معمولی
+
+
+
CommandHandler
+
هندل دستورات — argument اول command string است
+
+
+
CallbackQueryHandler
+
هندل callback query با data_match wildcard
+
+
+
EditedMessageHandler
+
هندل پیام‌های ویرایش شده
+
+
+
ChannelPostHandler
+
هندل پست‌های کانال
+
+
+
PreCheckoutQueryHandler
+
هندل pre-checkout پرداخت
+
+
+
ShippingQueryHandler
+
هندل shipping query
+
+
+
SuccessfulPaymentHandler
+
هندل پرداخت موفق
+
+
+
MyChatMemberHandler
+
هندل تغییر وضعیت ربات در چت
+
+
+
ChatMemberHandler
+
هندل تغییر وضعیت اعضا
+
+
+
ChatJoinRequestHandler
+
هندل درخواست عضویت
+
+
+
NewChatMembersHandler
+
هندل ورود اعضای جدید
+
+
+
+
python
+
from balepy.handlers import CommandHandler, CallbackQueryHandler
+
+async def start_cb(message):
+    await message.reply("شروع شد!")
+
+async def btn_cb(callback):
+    await bot.anwser_callback_query(callback.id, text="OK")
+
+bot.add_handler(CommandHandler("start", start_cb))
+bot.add_handler(CallbackQueryHandler(btn_cb, data_match="btn_*"))
+
+
+ + +
+ + +

Types Reference

+

تمام تایپ‌های قابل import از balepy.types:

+
+
+
🧑 User
+
+
idint
+
first_namestr
+
last_namestropt
+
usernamestropt
+
is_botbool
+
+
+
+
💬 Chat
+
+
idint
+
typestr
+
titlestropt
+
usernamestropt
+
+
+
+
📨 Message
+
+
message_idint
+
chat_idint
+
from_userUseropt
+
textstropt
+
captionstropt
+
photo, video, audio, ...objopt
+
+
+
+
🔘 CallbackQuery
+
+
idstr
+
from_userUser
+
data_textstropt
+
messageMessageopt
+
+
+
+
🖼 PhotoSize
+
+
file_idstr
+
widthint
+
heightint
+
file_sizeintopt
+
+
+
+
📁 File
+
+
file_idstr
+
file_unique_idstr
+
file_pathstropt
+
file_sizeintopt
+
+
+
+
💰 LabeledPrice
+
+
labelstr
+
amountint
+
to_dict()method
+
+
+
+
🎛 InlineKeyboardMarkup
+
+
inline_keyboardlist[list[Button]]
+
+
+
+
🔲 InlineKeyboardButton
+
+
textstr
+
callback_datastropt
+
urlstropt
+
+
+
+
⚙️ ChatPermissions
+
+
can_send_messagesboolopt
+
can_send_media_messagesboolopt
+
to_dict()method
+
+
+
+
🔗 InviteLink
+
+
invite_linkstr
+
creatorUser
+
expire_dateintopt
+
member_limitintopt
+
+
+
+
📍 Location
+
+
latitudefloat
+
longitudefloat
+
+
+
+
🎭 BotCommand
+
+
commandstr
+
descriptionstr
+
to_dict()method
+
+
+
+
🔄 Update
+
+
update_idint
+
messageMessageopt
+
callback_queryCallbackQueryopt
+
edited_messageMessageopt
+
+
+
+
🌐 WebHookInfo
+
+
urlstr
+
has_custom_certificatebool
+
pending_update_countint
+
+
+
+ +
+
python
+
from balepy.types import (
+    User, Chat, Message, CallbackQuery,
+    InlineKeyboardMarkup, InlineKeyboardButton,
+    LabeledPrice, BotCommand, ChatPermissions,
+    InputMediaPhoto, InputMediaVideo
+)
+
+
+ + +
+ + +

مدیریت خطا

+

در صورت بروز خطا از API، APIError raise می‌شود.

+
+
class APIError(Exception)
+ + + + + + +
attributeتایپتوضیح
error_codeintکد خطای HTTP
descriptionstrپیام خطا
+
+
+
python
+
from balepy.errors import APIError
+
+# روش ۱: try/except در هر هندلر
+@bot.on_message(filters.text)
+async def handler(message):
+    try:
+        await bot.send_message(message.chat_id, "سلام")
+    except APIError as e:
+        print(f"Error {e.error_code}: {e.description}")
+
+# روش ۲: error handler جهانی
+@bot.on_error
+async def global_error(error, update):
+    print(f"Unhandled: {error}")
+
+
+
+
Client به صورت خودکار تا max_retry بار تلاش مجدد می‌کند. این رفتار را با max_retry=0 غیرفعال کنید.
+
+ +
+ balepy v1.5.1 | MIT License | Python 3.9+ | Bale Bot API +
+
+ +
+ + + + + - \ No newline at end of file + diff --git a/statics/logo.png b/statics/logo.png new file mode 100644 index 0000000..1d2d5ca Binary files /dev/null and b/statics/logo.png differ diff --git a/style/docs.css b/style/docs.css deleted file mode 100644 index b44f00e..0000000 --- a/style/docs.css +++ /dev/null @@ -1,45 +0,0 @@ -.en { -font-family: "ubuntu"; -} - -.fonts{ -font-family: "vazir"; -} - -.boreder-radios{ -border-radius: 20px; -} -.borrrr{ -border-radius: 20px; -} -.bg-primary{ -background-color: blueviolet !important; -} -.bg-card{ -background-color: rgb(1, 46, 40); -} -.bg-doc{ -background-color: rgb(0, 105, 97); -} -.bg-channel{ -background-color: darkblue; -} -.bg-costomize{ -background-color: rgb(78, 0, 97); -} -.content{ -display: none; -} - -@font-face { - font-family: "vazir"; - src: url("../fonts/vazir.ttf"); -} -@font-face { - font-family: "vazirb"; - src: url("../fonts/vazir_black.ttf"); -} -@font-face { - font-family: "ubuntu"; - src: url("../fonts/ubuntu.ttf"); -} \ No newline at end of file diff --git a/style/style.css b/style/style.css deleted file mode 100644 index a56344f..0000000 --- a/style/style.css +++ /dev/null @@ -1,66 +0,0 @@ -body { - font-family: "ubuntu"; -} - -.img{ - border: 2px solid gray; - transition: 1s; -} -.img:hover{ - border: 5px solid blue; - border-radius: 10px; -} - -.fonts{ - font-family: "vazir"; -} - -.boreder-radios{ - border-radius: 20px; -} -.borrrr{ - border-radius: 20px; -} -.bg-primary{ - background-color: blueviolet !important; -} -.bg-card{ - background-color: rgb(1, 46, 40); -} -.bg-doc{ - background-color: rgb(0, 105, 97); -} -.bg-channel{ - background-color: darkblue; -} -.bg-costomize{ - background-color: rgb(78, 0, 97); -} -.content{ - display: none; -} -.divv2{ - border-radius: 20px; -} - -@font-face { - font-family: "vazir"; - src: url("../fonts/vazir.ttf"); -} -@font-face { - font-family: "vazirb"; - src: url("../fonts/vazir_black.ttf"); -} -@font-face { - font-family: "ubuntu"; - src: url("../fonts/ubuntu.ttf"); -} -.hover{ - transition: 1s; -} -.hover:hover{ - background-color: black; - color: white; - border-radius: 10px; - padding-right: 5px; -} \ No newline at end of file