Skip to content

最初のモジュール ​

Goroku のモジュールは Go の構造体です。自分の名前と、扱うコマンドを宣言します。 それ以外 — Telegram クライアント、ストレージ、翻訳、読み込みと解放のライフサイクル — はすべて goroku.Base から来ます。

ひな形を生成する ​

自分の「保存したメッセージ」に送ります。

.newmod Weather

Goroku が 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 はほぼ必ず欲しくなるので入って いますが、削除しても構いません。

導入する ​

ファイルを任意のチャットに送り、それに返信して次を送ります。

.loadmod

Goroku がネイティブの 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")
}

次へ ​

Released under the GNU AGPL v3 License.