Pustaka bot serba guna yang terinspirasi oleh Hubot tetapi ditulis dalam Go.
joe adalah perpustakaan yang digunakan untuk menulis bot obrolan dalam bahasa pemrograman Go. Ini sangat terinspirasi oleh kerangka Hubot mengagumkan yang dikembangkan oleh orang-orang di Github dan memberikan kekuatannya kepada orang-orang yang ingin mengimplementasikan bot obrolan menggunakan Go.
joe adalah perpustakaan perangkat lunak yang dikemas sebagai modul Go. Anda bisa mendapatkannya melalui:
go get github.com/go- joe / joe
Anda dapat menemukan semua contoh kode, penjelasan lebih lanjut, dan resep lengkap di https://joe-bot.net
Setiap bot terdiri dari Adaptor obrolan (misalnya untuk berintegrasi dengan Slack), implementasi Memori untuk mengingat data nilai kunci (misalnya menggunakan Redis) dan Otak yang merutekan pesan baru atau peristiwa khusus (misalnya menerima panggilan HTTP) ke bot terdaftar terkait fungsi penangan .
Secara default joe .New(…)
menggunakan adaptor CLI yang membuat bot membaca pesan dari stdin dan merespons di stdout. Selain itu bot akan menyimpan data nilai kunci di memori yang berarti ia akan melupakan apa pun yang Anda katakan saat dimulai ulang. Pengaturan default ini berguna untuk pengembangan lokal tanpa ketergantungan apa pun, tetapi Anda akan segera ingin menambahkan Modul lain untuk memperluas kemampuan bot.
Contoh berikut menghubungkan Bot dengan ruang kerja Slack dan menyimpan data nilai kunci di Redis. Untuk mengizinkan penangan pesan mengakses memori, kami mendefinisikannya sebagai fungsi pada tipe ExampleBot
khusus yang menyematkan 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 dikirimkan tanpa modul pihak ketiga seperti integrasi Redis untuk menghindari ketergantungan lebih dari yang sebenarnya Anda butuhkan. Namun sudah ada beberapa modul yang dapat Anda gunakan secara langsung untuk memperluas fungsionalitas bot Anda tanpa menulis terlalu banyak kode sendiri.
Jika Anda telah menulis modul dan ingin membagikannya, silakan tambahkan ke daftar ini dan buka permintaan tarik.
Silakan baca CONTRIBUTING.md untuk detail tentang kode etik kami dan proses pengiriman permintaan penarikan ke repositori ini.
PERANGKAT LUNAK INI MASIH DALAM BAHASA ALPHA DAN BELUM ADA JAMINAN TERHADAP STABILITAS API.
Semua perubahan signifikan (misalnya yang dapat menyebabkan gangguan) didokumentasikan di CHANGELOG.md.
Setelah rilis v1.0 kami berencana menggunakan SemVer untuk pembuatan versi. Untuk versi yang tersedia, lihat tag pada repositori ini.
Lihat juga daftar kontributor yang berpartisipasi dalam proyek ini.
Proyek ini dilisensikan di bawah Lisensi BSD-3-Clause - lihat file LICENSE untuk rinciannya.