1
0
forked from lxh/go-wxhelper
go-wxhelper/main.go

99 lines
2.3 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package main
import (
"github.com/gin-gonic/gin"
"go-wechat/config"
"go-wechat/initialization"
"go-wechat/mq"
"go-wechat/router"
"go-wechat/tasks"
"go-wechat/tcpserver"
"go-wechat/utils"
"html/template"
"log"
"net/http"
"os"
"strconv"
"strings"
"time"
)
func init() {
initialization.InitConfig() // 初始化配置
initialization.InitWechatRobotInfo() // 初始化机器人信息
initialization.Plugin() // 注册插件
tasks.InitTasks() // 初始化定时任务
mq.Init() // 初始化MQ
if flag, _ := strconv.ParseBool(os.Getenv("DONT_SEND")); flag {
log.Printf("已设置环境变量DONT_SEND不发送消息")
}
if flag, _ := strconv.ParseBool(os.Getenv("DONT_SAVE")); flag {
log.Printf("已设置环境变量DONT_SAVE不保存消息")
}
}
func main() {
// 如果启用了自动配置回调,就设置一下
if config.Conf.Wechat.AutoSetCallback {
utils.ClearCallback()
time.Sleep(500 * time.Millisecond) // 休眠五百毫秒再设置
utils.SetCallback(config.Conf.Wechat.Callback)
}
// 启动TCP服务
go tcpserver.Start()
// 启动HTTP服务
app := gin.Default()
// 自定义模板引擎函数
app.SetFuncMap(template.FuncMap{
"codeToChinese": func(code string) string {
switch code {
case "friend":
return "好友列表"
case "group":
return "群组列表"
case "index":
return "首页"
case "assistant":
return "AI角色"
default:
return "其他页面"
}
},
"boolToChinese": func(flag bool) string {
if flag {
return "是"
}
return "否"
},
"checkIsGroup": func(str string) bool {
// 如果id包含@chatroom就是群组
return strings.HasSuffix(str, "@chatroom")
},
})
app.LoadHTMLGlob("views/*.html")
app.Static("/assets", "./views/static")
app.StaticFile("/favicon.ico", "./views/wechat.ico")
// 404返回数据
app.NoRoute(func(ctx *gin.Context) {
if strings.HasPrefix(ctx.Request.URL.Path, "/api") {
ctx.String(404, "接口不存在")
return
}
// 404直接跳转到首页
ctx.Redirect(302, "/404.html")
})
app.NoMethod(func(ctx *gin.Context) {
ctx.String(http.StatusMethodNotAllowed, "不支持的请求方式")
})
// 初始化路由
router.Init(app)
if err := app.Run(":8080"); err != nil {
log.Panicf("服务启动失败:%v", err)
}
}