コード例 #1
0
ファイル: ape.go プロジェクト: mix3/ape-slack
func matcher(e *guiniol.EventCtx) (string, string) {
	t := e.MessageEvent().Text
	if m := pattern2.FindStringSubmatch(t); len(m) == 3 {
		return m[1], m[2]
	}
	if m := pattern1.FindStringSubmatch(t); len(m) == 3 {
		return m[1], m[2]
	}
	return "", ""
}
コード例 #2
0
ファイル: echo.go プロジェクト: mix3/guiniol
func EchoCallback(c context.Context, e *guiniol.EventCtx) {
	e.Reply(fmt.Sprintf(
		"@%s echo %s\n%s",
		e.UserIdToName(e.MessageEvent().User),
		Message(c),
		e.Permalink(),
	))
}
コード例 #3
0
ファイル: ape.go プロジェクト: mix3/ape-slack
func (c *Connection) actionCb(ctx context.Context, eventCtx *guiniol.EventCtx) {
	if eventCtx.MessageEvent().Subtype == "bot_message" {
		return
	}

	name, m := matcher(eventCtx)
	if name != eventCtx.UserName() && name != eventCtx.UserId() {
		return
	}

	e := newEvent(ctx, eventCtx, m)

	if action, ok := c.actionMap[e.Command().Name()]; ok {
		if err := action.fn(e); err != nil {
			e.Reply(err.Error())
		}
	} else {
		e.Reply("???")
	}
}