ETH官方钱包

前往
大廳
主題 達(dá)人專欄

輕鬆入門!哈哈姆特機(jī)器人開發(fā)套件 for Golang

解凍豬腳 | 2022-02-03 19:15:01 | 巴幣 4092 | 人氣 1213

 
前篇:《製作哈哈姆特不 EY 的聊天機(jī)器人!架設(shè)原理概述》

上面這篇是三年前寫的哈哈姆特機(jī)器人運(yùn)作原理跟簡單的訊息收發(fā)範(fàn)例。過往只是大致描述了巴哈姆特提供了什麼樣的 API(以及怎麼用)而已,實(shí)際上要傳送 HTTP request、解析 response 內(nèi)容這些事情還是得自己來。如果要認(rèn)真開發(fā)一個哈哈姆特機(jī)器人的話,把這些東西從頭寫起來還是蠻麻煩的。

這幾年斷斷續(xù)續(xù)摸熟了 Golang 這門語言的基礎(chǔ),找了機(jī)會回頭來做了專門處理哈哈姆特機(jī)器人訊息的套件,也算是終於把這個坑給填完了。


? 簡介

Repo:https://github.com/upk1997/go-hahamut-bot
說明文件(英文):https://github.com/upk1997/go-hahamut-bot/blob/master/README.md
說明文件(繁中):https://github.com/upk1997/go-hahamut-bot/blob/master/README_zh-tw.md

支援以下功能:
* 透過本機(jī)檔案路徑或圖片連結(jié)的上傳圖片功能
* 傳送文字訊息、貼圖訊息、圖片訊息、啟動事件訊息、更新事件訊息
* 專門用來解析 webhook 事件的 parser
* 承上,parser 自帶強(qiáng)制檢查簽章的功能


? 使用方法

當(dāng)你想用 Golang 來開發(fā)一個哈哈姆特機(jī)器人的時候,只要用 go get 指令把套件載下來:
go get -u "github.com/upk1997/go-hahamut-bot"

然後在 code 裡面把這個 package 引到你的 Golang 專案:
import "github.com/upk1997/go-hahamut-bot"

把對象產(chǎn)生出來(當(dāng)然在這之前你得先到創(chuàng)作者後臺申請一個機(jī)器人,你才有 ID、token、key):
myBot := hahamut.NewBot(botID, botAccessToken, botSecretKey)

接著就可以直接用短短的幾行 code 來收發(fā)訊息:
myBot.SendText("johnny860726", "Hello")

myBot.SendSticker("johnny860726", "1", "08")

image, _ := myBot.UploadImageFromURL("https://i.imgur.com/9tzLAzZ.jpg")
myBot.SendImage("johnny860726", image)

剩下的細(xì)節(jié)(包含完整的範(fàn)例),你可以直接在上面提供的說明文件看到。


? Bot on Heroku

為了安全考量,巴哈姆特限制必須在 HTTPS 上面收發(fā)訊息,也因此如果你是在自己的本機(jī)環(huán)境上面執(zhí)行、使用這個套件的話,最多就只能做到發(fā)送訊息、貼圖、圖片而已。想要「接收來自使用者的訊息」的話,你就必須架設(shè)一個 HTTP 伺服器(見說明文件裡的 HTTP Server & Webhook Example 一段),並且有域名(domain name)可以跑 HTTPS 才行。

當(dāng)然我這個人是沒有這麼勤奮,也懶得花什麼錢去租主機(jī),所以一般我會建議用 Heroku 之類的環(huán)境,光是網(wǎng)站給的免費(fèi)額度就很夠用了,還自帶 HTTPS,根本不用煩惱這些有的沒的。

要注意的是我們把哈哈姆特機(jī)器人套件引到專案裡面之後,必須執(zhí)行:
go mod vendor

把引用的套件複製一份到你的專案目錄下,你的專案內(nèi)容才會完整,也才能推到 Heroku 上面的 repo,避免 Heroku 的主機(jī)發(fā)生抓不到套件的問題。

另外一方面,如果你直接把 secretKey、token 這些比較敏感的資訊寫在 code 裡面的話,要注意別把你的這些 code 推到公開的 GitHub repository 上面,不然你的 key 就會被看光光了,對你的機(jī)器人來說會很危險。我會建議先確定好你的機(jī)器人 repo 是 private 的,到 Heroku 上面連動 GitHub 帳號,然後才把推到 GitHub 上面的程式碼 deploy 到伺服器上面去:




如果你對 Golang 跟哈哈姆特不 EY 的機(jī)器人很有興趣,希望這篇對你來說會有幫助。

測試下來應(yīng)該是不會有什麼 bug 才對,如果有什麼想要修改的就歡迎大家再把這個套件 fork 到自己的 repo 裡面改,送 pull request 過來的話我也不見得都會按接受就是,因?yàn)槲揖褪莻€懶人嘛 _(:з」∠)_


文章縮圖:哈哈姆特不 EY 官方機(jī)器人桃子 BOT 大圖
送禮物贊助創(chuàng)作者 !
70
留言

創(chuàng)作回應(yīng)

? 迅疾747向創(chuàng)作者進(jìn)行贊助 ?
https://truth.bahamut.com.tw/s01/202202/774a16ad4a301163178ab82869c97ef9.JPG
2022-02-03 19:35:46
解凍豬腳
感謝贊助
都看不懂了還贊助我 哪有這樣的 [e21]
2022-02-05 10:46:25
場外特色豆腐主義
才華洋溢的豬腳
2022-02-03 19:49:11
解凍豬腳
小妹我身上也是香味四溢ㄛ…
2022-02-05 10:46:36
很安全
到 Heroku 上面連動 GitHub 帳號,然後才把推到 GitHub 上面的程式碼 deploy 到伺服器上面去→可教學(xué)嗎
2022-02-04 20:10:05
解凍豬腳
這步驟有好幾個,不曉得你是指哪一個環(huán)節(jié)

一般我們先在 GitHub 註冊帳號、建立一個 private repository

接著寫好 code,利用 Git 把專案內(nèi)容 add、commit、push 到 GitHub 裡面你建立的這個 repo 裡面
接下來在 Heroku 也註冊一個帳號,建立一個 web application

點(diǎn)開這個建立好的 web application,找到 deploy 的選項(xiàng),你應(yīng)該會看到 deploy method 上面有 Heroku Git, GitHub, Container Registry 這三種,選 GitHub,經(jīng)過一些簡單的驗(yàn)證之後就可以連動了

這裡的連動只是指 Heroku 有權(quán)讀取你這一個 GitHub repo 的內(nèi)容,還沒真正把這些 code 寫到 Heroku 的 app 裡面去執(zhí)行,你要經(jīng)過正式的 deploy(部署)才能讓這些 code 在 Heroku 上面跑

deploy 的方式可以是手動(你每次如果要更新 code,就再進(jìn)來這個頁面按 manual deploy 這邊的 deploy 按鈕),也可以是自動(enable automatic deploys,啟用的話你每次 push 新版本的 code 到 GitHub 之後,這些 code 會接著再自動部署到 Heroku app 上面去)
2022-02-05 10:56:35
解凍豬腳
要注意你的 repo 一定要是 private,不然你的 code 內(nèi)容就會是公開給大家看到的
https://i.imgur.com/RvlfxyG.png
2022-02-05 11:00:17
解凍豬腳
Heroku 相關(guān)流程參閱:
http://www.jamesdambrosio.com/artwork.php?sn=4412222
2022-02-05 11:02:10
很安全
謝謝,這部分寫一篇,我收藏
2022-02-05 12:09:46
? 勳章向創(chuàng)作者進(jìn)行贊助 ?
2022-02-26 18:14:37
解凍豬腳
感謝贊助 [e38]
2022-02-28 05:31:52
追蹤 創(chuàng)作集

作者相關(guān)創(chuàng)作

相關(guān)創(chuàng)作

更多創(chuàng)作