最初のモジュール
Goroku のモジュールは Go の構造体です。自分の名前と、扱うコマンドを宣言します。 それ以外 — Telegram クライアント、ストレージ、翻訳、読み込みと解放のライフサイクル — はすべて goroku.Base から来ます。
ひな形を生成する
自分の「保存したメッセージ」に送ります。
.newmod WeatherGoroku が Weather.go を返します。ハンドラの雛形と、使えるヘルパーの説明が コメントに入った動くモジュールです。白紙から始める必要はありません。
TIP
.newmod は所有者専用で、名前は有効な Go の型名 — 大文字始まり(weather では なく Weather)である必要があります。
生成されるもの
go
package modules
import "goroku/goroku"
type Weather struct {
goroku.Base
}
func (m *Weather) Name() string { return "Weather" }
func (m *Weather) Strings() map[string]string {
return map[string]string{
"name": "Weather",
"_cls_doc": "What Weather does",
"_cmd_doc_weather": "What .weather does",
"no_args": "❌ <b>Send some text or reply to a message</b>",
}
}
func (m *Weather) Commands() map[string]goroku.CommandHandler {
return map[string]goroku.CommandHandler{
"weather": m.WeatherCmd,
}
}
func (m *Weather) WeatherCmd(msg *goroku.Message) error {
input := msg.ArgsOrReply()
if input == "" {
return msg.Answer(m.T("no_args", "❌ <b>Send some text or reply to a message</b>"))
}
return msg.Answer("<b>Weather got:</b> <code>" + input + "</code>")
}必須は Name と Commands だけです。Strings はほぼ必ず欲しくなるので入って いますが、削除しても構いません。
導入する
ファイルを任意のチャットに送り、それに返信して次を送ります。
.loadmodGoroku がネイティブの Go プラグインとしてコンパイルし、コマンドを登録します。 .weather hi がもう応答します。
ネイティブプラグインはあなたのプロセスで動きます
モジュールはユーザーボット内で、あなたの Telegram セッションとともに通常の Go コードとして動きます。ソースを読んだモジュールだけを導入してください。 モジュールの導入 を参照。
書き換える
ハンドラを編集して、新しいファイルを .loadmod します。同じ構造体名なら動作中の モジュールを置き換えます。
go
func (m *Weather) WeatherCmd(msg *goroku.Message) error {
city := msg.Args()
if city == "" {
return msg.Answer(m.T("no_city", "❌ <b>どの都市ですか?</b>"))
}
return msg.Answer("🌤 <b>" + city + "</b>: 晴れ、22°C")
}