Python > الحصول على محتوى المنشور عند ذكره

هذا رائع. شكراً على المعلومات. لا يوجد الكثير من المعلومات المتاحة حول Python و Discourse، لذا يسعدني أن أتعلم، وربما يساعد هذا الآخرين. لقد جربت الكود الخاص بك للتو، ويبدو أنه يعمل كما هو متوقع. بالطبع، لم أتوقف عن اللعب، لذا وجدت حلاً بديلاً للوصول إلى الخطوة 5، وطريقة مختلفة للحصول على القيم التي احتجتها حتى لصق المحتوى الخام للمنشور.

ما أريده هو هذا بشكل أساسي.

  1. الحصول على الإشعارات
  2. الحصول على أرقام المنشورات
  3. الحصول على محتوى المنشور
  4. إنشاء رد باستخدام OpenAI
  5. نشر الرد
  6. تمييز هذا الإشعار نفسه على أنه مقروء؟
# إعداد حلقة لتشغيل الروبوت إلى أجل غير مسمى
while True:
    # الحصول على إجراءات المستخدم وجلب معرف المنشور    
    data = {
    'username': 'theuser',
    # للإشارات والردود، أحتاج إلى الحصول على المرشحات 6 + 7، ولكن لسبب ما يتم إعطاء استجابة JSON واحدة فقط.
    'filter': 6 | 7,
    'limit': 10,
    }
    
    unread_mentions = client.user_actions.json.get(data)
    print(unread_mentions)

    user_actions = unread_mentions['user_actions']

    # التكرار فوق كل إشارة غير مقروءة
    for user_action in unread_mentions['user_actions']:
        topic_id = user_action['topic_id']
        post_number = user_action['post_number']
        post_id = user_action['post_id']
        username = user_action['username']

        print(f'معرف الموضوع: {topic_id}, رقم المنشور: {post_number}, معرف المنشور: {post_id}, الرد على: {username}')
    
        # الحصول على محتوى المنشور   
        post = client.posts[post_id].json.get()

        # طباعة محتوى المنشور
        post_content = post['raw']

        # إنشاء رد على المنشور
        response = generate_response(post_content)
    
        # نشر رد على المنتدى
        content = {
            'topic_id': topic_id,
            'raw': response + ' @' + str(username)
        }
        make_post = client.posts.json.post(content)

حالياً أواجه مشكلتين:

  • يتم جلب إشارة واحدة فقط. لا بد أنني نسيت شيئاً، لكنني لم أكتشف السبب بعد.
  • بالطبع نريد الرد على منشور مرة واحدة فقط، وبما أننا نقوم بالتكرار نحتاج إلى شيء هنا لمنع ذلك.
    • يمكننا تخزين معرف المنشور في ملف .txt (لست متأكداً من مقدار البيانات التي يمكن تخزينها، أعتقد أنه يمكنك التعامل مع العديد من الإشارات هنا.
    • كان حلي المثالي هو تمييز الإشعار على أنه مقروء. لكنني أدركت أنه في أي من أكوادنا، لا نقوم بجلب الإشارات غير المقروءة (حسناً، حاولت في البداية، جلب الإشعارات غير المقروءة، لكنني لم أتمكن من استخراج/تخزين متغير post_id الذي كنت بحاجة لاستخدامه /posts/get.json وجلب المحتوى “الخام”).

هدفي النهائي هو تغذية الاستجابة بواجهة برمجة تطبيقات OpenAI. لكنني أحتاج أولاً إلى إيجاد طريقة لحل المشاكل المذكورة أعلاه.