You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: sleep_manage.go
    path of file: ./repos/ZeroBot-Plugin/plugin/sleepmanage
    
    the code of the file until where you have to start completion: // Package sleepmanage 睡眠管理
package sleepmanage

import (
	"fmt"
	"time"

	log "github.com/sirupsen/logrus"
	zero "github.com/wdvxdr1123/ZeroBot"
	"github.com/wdvxdr1123/ZeroBot/message"

	ctrl "github.com/FloatTech/zbpctrl"
	"github.com/FloatTech/zbputils/control"
)

func init() {
	engine := control.AutoRegister(&ctrl.Options[*zero.Ctx]{
		DisableOnDefault:  false,
		Brief:             "睡眠小助手",
		Help:              "- 早安\n- 晚安",
		PrivateDataFolder: "sleep",
	})
	go func() {
		sdb = initialize(engine.DataFolder() + "manage.db")
	}()
	engine.OnFullMatch("早安", isMorning, zero.OnlyGroup).SetBlock(true).
		Handle(func(ctx *zero.Ctx) {
			position, getUpTime := sdb.getUp(ctx.Event.GroupID, ctx.Event.UserID)
			lo
    
func init() {
	engine := control.AutoRegister(&ctrl.Options[*zero.Ctx]{
		DisableOnDefault:  false,
		Brief:             "睡眠小助手",
		Help:              "- 早安\n- 晚安",
		PrivateDataFolder: "sleep",
	})
	go func() {
		sdb = initialize(engine.DataFolder() + "manage.db")
	}()
	engine.OnFullMatch("早安", isMorning, zero.OnlyGroup).SetBlock(true).
		Handle(func(ctx *zero.Ctx) {
			position, getUpTime := sdb.getUp(ctx.Event.GroupID, ctx.Event.UserID)
			log.Debugln(position, getUpTime)
			hour, minute, second := timeDuration(getUpTime)
			if (hour == 0 && minute == 0 && second == 0) || hour >= 24 {
				ctx.SendChain(message.Reply(ctx.Event.MessageID), message.Text(fmt.Sprintf("早安成功！你是今天第%d个起床的", position)))
			} else {
				ctx.SendChain(message.Reply(ctx.Event.MessageID), message.Text(fmt.Sprintf("早安成功！你的睡眠时长为%d时%d分%d秒,你是今天第%d个起床的", hour, minute, second, position)))
			}
		})
	engine.OnFullMatch("晚安", isEvening, zero.OnlyGroup).SetBlock(true).
		Handle(func(ctx *zero.Ctx) {
			position, sleepTime := sdb.sleep(ctx.Event.GroupID, ctx.Event.UserID)
			log.Debugln(position, sleepTime)
			hour, minute, second := timeDuration(sleepTime)
			if (hour == 0 && minute == 0 && second == 0) || hour >= 24 {
				ctx.SendChain(message.Reply(ctx.Event.MessageID), message.Text(fmt.Sprintf("晚安成功！你是今天第%d个睡觉的", position)))
			} else {
				ctx.SendChain(message.Reply(ctx.Event.MessageID), message.Text(fmt.Sprintf("晚安成功！你的清醒时长为%d时%d分%d秒,你是今天第%d个睡觉的", hour, minute, second, position)))
			}
		})
}