مكتبة روبوتات للأغراض العامة مستوحاة من Hubot ولكنها مكتوبة بلغة Go.
joe هي مكتبة تُستخدم لكتابة روبوتات الدردشة بلغة البرمجة Go. إنه مستوحى جدًا من إطار عمل Hubot الرائع الذي طوره الأشخاص في Github ويجلب قوته للأشخاص الذين يرغبون في تنفيذ روبوتات الدردشة باستخدام Go.
joe هي مكتبة برمجيات تم تجميعها كوحدة Go. يمكنك الحصول عليه عبر:
go get github.com/go- joe / joe
يمكنك العثور على جميع أمثلة التعليمات البرمجية ومزيد من الشرح والوصفات الكاملة على https://joe-bot.net
يتكون كل روبوت من محول دردشة (على سبيل المثال للتكامل مع Slack)، وتنفيذ ذاكرة لتذكر بيانات القيمة الرئيسية (على سبيل المثال باستخدام Redis) وعقل يقوم بتوجيه الرسائل الجديدة أو الأحداث المخصصة (على سبيل المثال تلقي مكالمة HTTP) إلى المسجل المقابل وظائف المعالج .
بشكل افتراضي، يستخدم joe .New(…)
محول CLI الذي يجعل الروبوت يقرأ الرسائل من stdin ويستجيب على stdout. بالإضافة إلى ذلك، سيقوم الروبوت بتخزين بيانات القيمة الأساسية في الذاكرة مما يعني أنه سينسى أي شيء أخبرته به عند إعادة تشغيله. يعد هذا الإعداد الافتراضي مفيدًا للتطوير المحلي دون أي تبعيات ولكنك ستحتاج بسرعة إلى إضافة وحدات أخرى لتوسيع قدرات الروبوتات.
يقوم المثال التالي بتوصيل الروبوت بمساحة عمل Slack وتخزين بيانات القيمة الرئيسية في Redis. للسماح لمعالجات الرسائل بالوصول إلى الذاكرة، نحددها كوظائف على نوع ExampleBot
المخصص الذي يتضمن joe .Bot
.
package main
import (
"fmt"
"github.com/go- joe / joe "
"github.com/go- joe /redis-memory"
"github.com/go- joe /slack-adapter/v2"
)
type ExampleBot struct {
* joe . Bot
}
func main () {
b := & ExampleBot {
Bot : joe . New ( "example" ,
redis . Memory ( "localhost:6379" ),
slack . Adapter ( "xoxb-1452345…" ),
),
}
b . Respond ( "remember (.+) is (.+)" , b . Remember )
b . Respond ( "what is (.+)" , b . WhatIs )
err := b . Run ()
if err != nil {
b . Logger . Fatal ( err . Error ())
}
}
func ( b * ExampleBot ) Remember ( msg joe . Message ) error {
key , value := msg . Matches [ 0 ], msg . Matches [ 1 ]
msg . Respond ( "OK, I'll remember %s is %s" , key , value )
return b . Store . Set ( key , value )
}
func ( b * ExampleBot ) WhatIs ( msg joe . Message ) error {
key := msg . Matches [ 0 ]
var value string
ok , err := b . Store . Get ( key , & value )
if err != nil {
return fmt . Errorf ( "failed to retrieve key %q from brain: %w" , key , err )
}
if ok {
msg . Respond ( "%s is %s" , key , value )
} else {
msg . Respond ( "I do not remember %q" , key )
}
return nil
}
لا يأتي joe بدون وحدات طرفية خارجية مثل تكامل Redis لتجنب سحب تبعيات أكثر مما تحتاج إليه بالفعل. ومع ذلك، توجد بالفعل بعض الوحدات التي يمكنك استخدامها مباشرةً لتوسيع وظائف الروبوت الخاص بك دون كتابة الكثير من التعليمات البرمجية بنفسك.
إذا كنت قد كتبت وحدة نمطية وترغب في مشاركتها، فيرجى إضافتها إلى هذه القائمة وفتح طلب سحب.
يرجى قراءة CONTRIBUTING.md للحصول على تفاصيل حول قواعد السلوك لدينا وعن عملية إرسال طلبات السحب إلى هذا المستودع.
لا يزال هذا البرنامج في مرحلة ألفا ولا توجد ضمانات فيما يتعلق باستقرار واجهة برمجة التطبيقات حتى الآن.
تم توثيق كافة التغييرات الهامة (مثلاً، العاجلة) في CHANGELOG.md.
بعد الإصدار v1.0، نخطط لاستخدام SemVer لإصدار الإصدارات. للتعرف على الإصدارات المتاحة، راجع العلامات الموجودة في هذا المستودع.
انظر أيضًا قائمة المساهمين الذين شاركوا في هذا المشروع.
هذا المشروع مرخص بموجب ترخيص BSD-3-Clause - راجع ملف الترخيص للحصول على التفاصيل.