Files
snowluma/example_test.go

55 lines
1.3 KiB
Go

package snowluma_test
import (
"context"
"os"
"os/signal"
snowluma "gitea.doicat.com/bot/snowluma"
)
// 完整示例:配置连接、注册事件与命令,阻塞运行直到收到中断信号。
func Example() {
bot := snowluma.New().
SetToken("your-token").
SetForwardWS("ws://127.0.0.1:3001")
// 可叠加其他通信方式:
// bot.SetReverseWS(":8080")
// bot.SetHTTPAPI("http://127.0.0.1:3000")
// bot.SetHTTPReport(":8081")
// 文本命令
bot.OnCommand("/ping", func(c *snowluma.Context, args []string) {
c.ReplyText("pong!")
})
// 群里 @机器人 就复读
bot.OnGroupMessage(func(c *snowluma.Context) {
if c.HasAtMe() && !c.IsSelfMessage() {
c.ReplyText("收到: " + c.PlainText())
}
})
// 进群欢迎
bot.OnNoticeType("group_increase", func(c *snowluma.Context) {
c.SendGroupMsg(nil, c.Event.Notice.GroupID, snowluma.Text("欢迎新人~"))
})
// 被戳就戳回去
bot.OnNoticeType("notify", func(c *snowluma.Context) {
n := c.Event.Notice
if n.SubType == "poke" && n.TargetID == c.SelfID() {
c.SendPoke(nil, n.GroupID, n.UserID)
}
})
// 好友/群请求自动同意
bot.OnRequest(func(c *snowluma.Context) {
c.Approve()
})
ctx, stop := signal.NotifyContext(context.Background(), os.Interrupt)
defer stop()
bot.Run(ctx)
}