<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های محمد لطیفی پور</title>
        <link>https://virgool.io/feed/@m_39665950</link>
        <description>یه بنده خدایی</description>
        <language>fa</language>
        <pubDate>2026-04-14 14:50:51</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/4763344/avatar/dJTFg1.jpg?height=120&amp;width=120</url>
            <title>محمد لطیفی پور</title>
            <link>https://virgool.io/@m_39665950</link>
        </image>

                    <item>
                <title>کتابخانه ریوپای</title>
                <link>https://virgool.io/NotifiedRiopy/%DA%A9%D8%AA%D8%A7%D8%A8%D8%AE%D8%A7%D9%86%D9%87-%D8%B1%DB%8C%D9%88%D9%BE%D8%A7%DB%8C-pt2kv7ctoe1q</link>
                <description>riopyمعرفی و نصبشروع سریعهسته کتابخانهساختار کتابخانهکلاس Botمدل‌های دادهپیشرفتهمدیریت رویدادهااستفاده از Webhookکیبوردهامدیریت خطاهامتفرقهنکات مهممجوز و توسعه‌دهندهنسخه 3.2.0مستندات کتابخانه riopyیک کتابخانه قدرتمند و ساده پایتون برای توسعه ربات‌های روبیکا. این کتابخانه به شما امکان می‌دهد به راحتی با API روبیکا تعامل داشته باشید، پیام‌ها را مدیریت کنید و ربات‌های هوشمند بسازید.نصببرای نصب کتابخانه از pip استفاده کنید:pip install riopyپس از نصب، می‌توانید نسخه نصب شده را بررسی کنید:import riopyprint(riopy.__version__)   # 0.1.1 یا بالاترشروع سریعیک بات ساده که به پیام /start پاسخ می‌دهد:import riopybot = riopy.Bot(&quot;توکن_بات_شما&quot;)@bot.on_message()def handle_message(update):    if update.new_message.text == &quot;/start&quot;:        bot.send_message(            chat_id=update.chat_id,            text=&quot;سلام! به بات من خوش آمدی 👋&quot;        )if __name__ == &quot;__main__&quot;:    bot.polling()ساختار کتابخانهکتابخانه از بخش‌های کلیدی زیر تشکیل شده است:riopy.Bot: کلاس اصلی برای تعامل با APIriopy.types: مدل‌های داده (Update, Message, Chat, ...)riopy.exceptions: استثناهای سفارشی برای مدیریت خطاriopy.polling: مدیریت دریافت پیام‌ها به روش Long Pollingکلاس Botایجاد نمونهfrom riopy import Botbot = Bot(&quot;token&quot;)متدهای اصلیدریافت اطلاعات باتme = bot.get_me()print(me.bot_title)   # نام باتprint(me.bot_id)      # شناسه باتارسال پیام متنیmessage_id = bot.send_message(    chat_id=&quot;شناسه_چت&quot;,    text=&quot;متن پیام&quot;,    disable_notification=False,          # (اختیاری)    reply_to_message_id=&quot;شناسه_پیام&quot;,    # (اختیاری) پاسخ به پیام خاص    chat_keypad=...,                      # (اختیاری) کیبورد پایین صفحه    inline_keypad=...                      # (اختیاری) کیبورد شیشه‌ای)ارسال نظرسنجیmessage_id = bot.send_poll(    chat_id=&quot;شناسه_چت&quot;,    question=&quot;آیا این کتابخانه مفید است؟&quot;,    options=[&quot;بله&quot;, &quot;خیر&quot;, &quot;نظری ندارم&quot;])مدیریت اعضا (مسدود کردن و رفع مسدودیت)# مسدود کردن کاربر در گروه/کانالbot.ban_chat_member(&quot;chat_id&quot;, &quot;user_id&quot;)# رفع مسدودیت کاربرbot.unban_chat_member(&quot;chat_id&quot;, &quot;user_id&quot;)مدل‌های داده (riopy.types)این بخش شامل ساختار داده‌های دریافتی از سرور است.Updateفیلد	نوع	توضیحاتtype	UpdateTypeEnum	نوع آپدیت (NewMessage, UpdatedMessage, ...)chat_id	str	شناسه چتnew_message	Optional[Message]	پیام جدیدupdated_message	Optional[Message]	پیام ویرایش‌شدهMessageفیلد	نوع	توضیحاتmessage_id	str	شناسه پیامtext	Optional[str]	متن پیامsender_id	str	شناسه فرستندهtime	int	زمان ارسال (timestamp)مدیریت رویدادها (Polling)کتابخانه به شما امکان می‌دهد با دکوراتور @bot.on_message() تابعی برای پردازش پیام‌های جدید تعریف کنید.@bot.on_message()def my_handler(update):    # پردازش پیام جدید    passbot.polling(interval=2.0)   # بررسی هر ۲ ثانیهاستفاده از Webhookاگر سرور با دامنه عمومی و SSL دارید، می‌توانید به جای Polling از Webhook استفاده کنید.from flask import Flask, requestimport riopyapp = Flask(__name__)bot = riopy.Bot(&quot;token&quot;)@app.route(&quot;/webhook&quot;, methods=[&quot;POST&quot;])def webhook():    data = request.json    update = riopy.types.Update.from_dict(data.get(&quot;update&quot;))    # پردازش update مشابه قبل    return &quot;OK&quot;استفاده از کیبوردهاشما می‌توانید برای تعامل بهتر با کاربر، از دکمه‌های سفارشی استفاده کنید.ارسال کیبورد ساده (Chat Keypad)keypad = {    &quot;rows&quot;: [        {            &quot;buttons&quot;: [                {&quot;id&quot;: &quot;btn1&quot;, &quot;type&quot;: &quot;Simple&quot;, &quot;button_text&quot;: &quot;دکمه ۱&quot;},                {&quot;id&quot;: &quot;btn2&quot;, &quot;type&quot;: &quot;Simple&quot;, &quot;button_text&quot;: &quot;دکمه ۲&quot;}            ]        }    ],    &quot;resize_keyboard&quot;: True}bot.send_message(    chat_id=chat_id,    text=&quot;یک دکمه انتخاب کنید:&quot;,    chat_keypad=keypad,    chat_keypad_type=riopy.types.ChatKeypadTypeEnum.New)مدیریت خطاهاکتابخانه استثناهای زیر را تعریف کرده است:riopy.exceptions.RiopyError: خطای پایهriopy.exceptions.APIError: خطای برگشتی از APIriopy.exceptions.InvalidTokenError: توکن نامعتبرfrom riopy.exceptions import APIError, InvalidTokenErrortry:    me = bot.get_me()except InvalidTokenError:    print(&quot;توکن اشتباه است!&quot;)except APIError as e:    print(f&quot;خطای API: {e}&quot;)نکات مهمتوکن: از @BotFather در روبیکا دریافت کنید.دسترسی: برای دیدن همه پیام‌های گروه/کانال، گزینه «دریافت همه پیام‌ها» را در @BotFather فعال کنید.مدیریت: برای استفاده از متدهای مدیریتی مانند ban_chat_member، بات باید در گروه ادمین باشد.مجوز و توسعه‌دهندهاین پروژه تحت مجوز MIT منتشر شده است.توسعه‌دهنده: محمد لطیفی‌پورایمیل: mohammad.latifi@example.comسال انتشار: ۱۴۰۴© ۱۴۰۴ - تمامی حقوق برای کتابخانه riopy محفوظ است.</description>
                <category>محمد لطیفی پور</category>
                <author>محمد لطیفی پور</author>
                <pubDate>Sun, 15 Feb 2026 22:02:34 +0330</pubDate>
            </item>
            </channel>
</rss>