<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>نوشته های محمد لطیفی پور</title><link>https://virgool.ir/feed/@mohammadlatifipor</link><description>یه بنده خدایی</description><language>fa</language><pubDate>2026-11-11 06:54:05</pubDate><image><url>https://files.virgool.ir/upload/users/4763344/avatar/dJTFg1.jpg</url><title>محمد لطیفی پور</title><link>https://virgool.ir/@mohammadlatifipor</link></image><item><title>کتابخانه ریوپای</title><link>https://virgool.ir/NotifiedRiopy/کتابخانه-ریوپای-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(&#34;توکن_بات_شما&#34;)@bot.on_message()def handle_message(update):    if update.new_message.text == &#34;/start&#34;:        bot.send_message(            chat_id=update.chat_id,            text=&#34;سلام! به بات من خوش آمدی 👋&#34;        )if __name__ == &#34;__main__&#34;:    bot.polling()ساختار کتابخانهکتابخانه از بخش‌های کلیدی زیر تشکیل شده است:riopy.Bot: کلاس اصلی برای تعامل با APIriopy.types: مدل‌های داده (Update, Message, Chat, ...)riopy.exceptions: استثناهای سفارشی برای مدیریت خطاriopy.polling: مدیریت دریافت پیام‌ها به روش Long Pollingکلاس Botایجاد نمونهfrom riopy import Botbot = Bot(&#34;token&#34;)متدهای اصلیدریافت اطلاعات باتme = bot.get_me()print(me.bot_title)   # نام باتprint(me.bot_id)      # شناسه باتارسال پیام متنیmessage_id = bot.send_message(    chat_id=&#34;شناسه_چت&#34;,    text=&#34;متن پیام&#34;,    disable_notification=False,          # (اختیاری)    reply_to_message_id=&#34;شناسه_پیام&#34;,    # (اختیاری) پاسخ به پیام خاص    chat_keypad=...,                      # (اختیاری) کیبورد پایین صفحه    inline_keypad=...                      # (اختیاری) کیبورد شیشه‌ای)ارسال نظرسنجیmessage_id = bot.send_poll(    chat_id=&#34;شناسه_چت&#34;,    question=&#34;آیا این کتابخانه مفید است؟&#34;,    options=[&#34;بله&#34;, &#34;خیر&#34;, &#34;نظری ندارم&#34;])مدیریت اعضا (مسدود کردن و رفع مسدودیت)# مسدود کردن کاربر در گروه/کانالbot.ban_chat_member(&#34;chat_id&#34;, &#34;user_id&#34;)# رفع مسدودیت کاربرbot.unban_chat_member(&#34;chat_id&#34;, &#34;user_id&#34;)مدل‌های داده (riopy.types)این بخش شامل ساختار داده‌های دریافتی از سرور است.Updateفیلد&#x9;نوع&#x9;توضیحاتtype&#x9;UpdateTypeEnum&#x9;نوع آپدیت (NewMessage, UpdatedMessage, ...)chat_id&#x9;str&#x9;شناسه چتnew_message&#x9;Optional[Message]&#x9;پیام جدیدupdated_message&#x9;Optional[Message]&#x9;پیام ویرایش‌شدهMessageفیلد&#x9;نوع&#x9;توضیحاتmessage_id&#x9;str&#x9;شناسه پیامtext&#x9;Optional[str]&#x9;متن پیامsender_id&#x9;str&#x9;شناسه فرستندهtime&#x9;int&#x9;زمان ارسال (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(&#34;token&#34;)@app.route(&#34;/webhook&#34;, methods=[&#34;POST&#34;])def webhook():    data = request.json    update = riopy.types.Update.from_dict(data.get(&#34;update&#34;))    # پردازش update مشابه قبل    return &#34;OK&#34;استفاده از کیبوردهاشما می‌توانید برای تعامل بهتر با کاربر، از دکمه‌های سفارشی استفاده کنید.ارسال کیبورد ساده (Chat Keypad)keypad = {    &#34;rows&#34;: [        {            &#34;buttons&#34;: [                {&#34;id&#34;: &#34;btn1&#34;, &#34;type&#34;: &#34;Simple&#34;, &#34;button_text&#34;: &#34;دکمه ۱&#34;},                {&#34;id&#34;: &#34;btn2&#34;, &#34;type&#34;: &#34;Simple&#34;, &#34;button_text&#34;: &#34;دکمه ۲&#34;}            ]        }    ],    &#34;resize_keyboard&#34;: True}bot.send_message(    chat_id=chat_id,    text=&#34;یک دکمه انتخاب کنید:&#34;,    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(&#34;توکن اشتباه است!&#34;)except APIError as e:    print(f&#34;خطای API: {e}&#34;)نکات مهمتوکن: از @BotFather در روبیکا دریافت کنید.دسترسی: برای دیدن همه پیام‌های گروه/کانال، گزینه «دریافت همه پیام‌ها» را در @BotFather فعال کنید.مدیریت: برای استفاده از متدهای مدیریتی مانند ban_chat_member، بات باید در گروه ادمین باشد.مجوز و توسعه‌دهندهاین پروژه تحت مجوز MIT منتشر شده است.توسعه‌دهنده: محمد لطیفی‌پورایمیل: mohammad.latifi@example.comسال انتشار: ۱۴۰۴© ۱۴۰۴ - تمامی حقوق برای کتابخانه riopy محفوظ است.</description><category>محمد لطیفی پور</category><author>محمد لطیفی پور</author><pubDate>Sun, 15 Feb 2026 23:02:34 +0330</pubDate></item></channel></rss>