Esempio n. 1
0
// InitCoin register's coin command on module load
func InitCoin(mod *modules.Module) {
	mod.AddResponse(coinreg, func(r *modules.Response) {
		throwCoin(r.Message)
	}, nil)
	mod.AddCommand("coin", func(r *modules.Command) {
		throwCoin(r.Message)
	}, nil)
}
Esempio n. 2
0
// RegisterModule register's module into bot
func (b *Bot) RegisterModule(mod *modules.Module) {
	name := mod.Name()
	lname := strings.ToLower(name)
	if b.modules[lname] == nil {
		b.modules[lname] = mod
		mod.Initialize(b.Connection, b.Config, name)
	} else {
		log.Fatal("Cannot register module \"" + name + "\", module with same name already exists!")
	}
}
Esempio n. 3
0
func Init(mod *modules.Module) {
	mod.AddIrcMessageHandler("join on ok", func(event *irc.Message) {
		if event.Command == "001" {
			channels := mod.GetConfig().GetStringSlice("autojoin.channels")
			for _, chn := range channels {
				event.Server.Join(chn)
			}
		}
	}, nil)
}
Esempio n. 4
0
// InitSystem register's dice commands on module load
func InitSystem(mod *modules.Module) {
	owner := &modules.OwnerPermission{}
	mod.AddResponse(quitreg, func(r *modules.Response) {
		r.Respond("okey, " + r.Nick + "! Goodbye everypony!")
		syscall.Kill(syscall.Getpid(), syscall.SIGINT)
	}, owner)
	mod.AddResponse(restartreg, func(r *modules.Response) {
		r.Respond("okey, " + r.Nick + "! Reebooot!")
		syscall.Kill(syscall.Getpid(), syscall.SIGUSR2)
	}, owner)
	mod.AddResponse(joinpartreg, func(r *modules.Response) {
		if r.Matches[1] == "join" {
			if len(r.Matches)-1 >= 3 && r.Matches[3] != "" {
				r.Server.Join("#" + r.Matches[3])
				r.Respond("okey, " + r.Nick + "! let'z join " + "#" + r.Matches[3])
			} else {
				r.Mention("tell me where to join!")
			}
		} else if r.Matches[1] == "part" {
			if len(r.Matches)-1 >= 3 && r.Matches[3] != "" {
				r.Respond("okey, " + r.Nick + "! let'z leave " + "#" + r.Matches[3])
				r.Server.Part("#" + r.Matches[3])
			} else if r.Channel != "" {
				r.Respond("okey, " + r.Nick + " leaving from here!")
				r.Server.Part(r.Channel)
			} else {
				r.Mention("tell me from what to leave!")
			}
		}

	}, owner)
	mod.AddResponse(nickreg, func(r *modules.Response) {
		r.Server.Nick(r.Matches[1])
		r.Respond("okey, " + r.Nick + "! Let'z talk as another pony!")
	}, owner)

	mod.AddResponse(statsreg, func(r *modules.Response) {
		mem := &runtime.MemStats{}
		runtime.ReadMemStats(mem)
		r.Respond("PID: " + strconv.Itoa(syscall.Getpid()) + ", last (re)start: " + human.Time(startTime) + ", sys memory: " + human.Bytes(mem.Sys))
	}, owner)
}
Esempio n. 5
0
func UpdateInit(mod *modules.Module) {
	owner := &modules.OwnerPermission{}
	mod.AddResponse(updatereg, func(r *modules.Response) {

		r.Respond("okey, " + r.Nick + "!")

		err, errRecover := update.New().FromUrl(mod.GetConfig().UpdateUrl)
		if err != nil {
			r.Respondf("Update failed: %v", err)
			if errRecover != nil {
				log.Errorf("Failed to recover bad update: %v!", errRecover)
				log.Fatalf("Program exectuable may be missing!")
			}
			return
		}

		log.Info("Update done!")
		r.Respond("update done!")

		//restart
		syscall.Kill(syscall.Getpid(), syscall.SIGUSR2)
	}, owner)
}
Esempio n. 6
0
// InitDice register's dice commands on module load
func InitDice(mod *modules.Module) {
	mod.AddResponse(dicereg, func(r *modules.Response) {
		if len(r.Matches)-1 >= 4 && r.Matches[4] != "" {
			dice := strings.Split(r.Matches[4], "d")
			dices, _ := strconv.Atoi(dice[0])
			faces, _ := strconv.Atoi(dice[1])
			throwDice(r.Message, dices, faces)
		} else {
			throwDice(r.Message, 1, 6)
		}
	}, nil)
	mod.AddCommand("dice", func(r *modules.Command) {
		matches := dicesubreg.FindStringSubmatch(r.Text)
		if len(matches)-1 >= 1 && matches[1] != "" {
			dice := strings.Split(matches[1], "d")
			dices, _ := strconv.Atoi(dice[0])
			faces, _ := strconv.Atoi(dice[1])
			throwDice(r.Message, dices, faces)
		} else {
			throwDice(r.Message, 1, 6)
		}
	}, nil)
}