package main import "net/http" type levelUpAchieveStatProcessor struct { Achievements []levelUpAchievement } func (p *levelUpAchieveStatProcessor) GetName() string { return "LevelUp Achievements" } func (p *levelUpAchieveStatProcessor) GetStatKeys() []string { return []string{ "levelupachievement-*", } } func (p *levelUpAcheiveStatProcessor) Initialize() { // TODO: Set up achievements p.Achievements = append(p.Achievements, levelUpAchievement{ GetName: func() string { }, GetText: func() string { }, DoesUserHave: func(uID string) bool { }, ProcessMessage: func(m *Message) bool { }, }) } type levelUpAchievement struct { GetName func() string GetText func() string // Returns whether the user already has this achievement DoesUserHave func(uID string) bool // Processes the message, returns true if the achievement was triggered ProcessMessage func(m *Message) bool } func (p *levelUpAchieveStatProcessor) ProcessMessage(m *Message) { type UserLevelUpStats struct { Name string Xp int ChannelStats map[string]int OtherStats map[string]int } var u *User var err error if u, err = getUserInfo(m.User); err != nil { return } userStat := UserLevelUpStats{Name: u.Name} userStat.Xp, _ = getUserStat(u.ID, "levelup-xp") userStat.ChannelStats = getAllLevelUpChannelXp(u.ID) userStat.OtherStats = getAllNonLevelUpStats(u.ID) } func (p *levelUpAchieveStatProcessor) ProcessAdminMessage(m *Message) {} func (p *levelUpAchieveStatProcessor) ProcessBotMessage(m *Message) {} func (p *levelUpAchieveStatProcessor) ProcessUserMessage(m *Message) {} func (p *levelUpAchieveStatProcessor) ProcessAdminUserMessage(m *Message) {} func (p *levelUpAchieveStatProcessor) ProcessBotUserMessage(m *Message) {} func (p *levelUpAchieveStatProcessor) ProcessChannelMessage(m *Message) { } func (p *levelUpAchieveStatProcessor) ProcessAdminChannelMessage(m *Message) {} func (p *levelUpAchieveStatProcessor) ProcessBotChannelMessage(m *Message) {} /* * Web Site Module */ type levelUpAchieveWebModule struct{} func (wm *levelUpAchieveWebModule) GetName() string { return "LevelUp Achievement Web Module" } func (wm *levelUpAchieveWebModule) GetRoutes() map[string]func(http.ResponseWriter, *http.Request) { ret := make(map[string]func(http.ResponseWriter, *http.Request)) ret["/levelup/achieve"] = wm.handleLevelUpAchieveGeneral return ret } func (wm *levelUpAchieveWebModule) Register() { for k, v := range wm.GetRoutes() { r.HandleFunc(k, v) } } func (wm *levelUpAchieveWebModule) GetMenuEntries() []menuItem { var ret []menuItem //ret = append(ret, menuItem{Text: "Achieve GET!", Link: "/levelup/achieve"}) return ret } func (wm *levelUpAchieveWebModule) GetBottomMenuEntries() []menuItem { var ret []menuItem return ret } func (wm *levelUpAchieveWebModule) handleLevelUpAchieveGeneral(w http.ResponseWriter, req *http.Request) { initRequest(w, req) setMenuItemActive("Achieve GET!") }