예제 #1
0
파일: main.go 프로젝트: igungor/ilber
func main() {
	log.SetFlags(0)
	log.SetPrefix("echobot: ")
	flag.Usage = usage
	flag.Parse()

	if *webhook == "" {
		log.Printf("missing webhook parameter\n\n")
		flag.Usage()
	}
	if *token == "" {
		log.Printf("missing token parameter\n\n")
		flag.Usage()
	}

	b := tlbot.New(*token)
	err := b.SetWebhook(*webhook)
	if err != nil {
		log.Fatal(err)
	}

	messages := b.Listen(net.JoinHostPort(*host, *port))
	for msg := range messages {
		go func() {
			// echo the message as *bold*
			txt := "*" + msg.Text + "*"
			err := b.SendMessage(msg.Chat.ID, txt, tlbot.ModeMarkdown, false, nil)
			if err != nil {
				log.Printf("Error while sending message. Err: %v\n", err)
			}
		}()
	}
}
예제 #2
0
파일: main.go 프로젝트: igungor/ilber
func main() {
	log.SetPrefix("ilber: ")
	log.SetFlags(log.LstdFlags | log.Lshortfile)
	flag.Usage = usage
	flag.Parse()

	config, err := readConfig(*flagConfig)
	if err != nil {
		fmt.Fprintf(os.Stderr, "configuration error: %v\n", err)
		os.Exit(1)
	}

	b := tlbot.New(config.Token)
	if err := b.SetWebhook(config.Webhook); err != nil {
		log.Fatalf("error while setting webhook: %v", err)
	}
	log.Printf("Webhook set to %v\n", config.Webhook)

	if config.Profile {
		go func() {
			log.Println("Exposing profile information on http://:6969")
			log.Printf("profile error: %v", http.ListenAndServe(":6969", nil))
		}()
	}

	ctx := newCtxWithValues(config)

	messages := b.Listen(net.JoinHostPort(config.Host, config.Port))
	for msg := range messages {
		log.Printf("%v\n", msg)

		// react only to user sent messages
		if msg.IsService() {
			continue
		}
		// is message a bot command?
		cmdname := msg.Command()
		if cmdname == "" {
			continue
		}

		// is the command even registered?
		cmd := command.Lookup(cmdname)
		if cmd == nil {
			continue
		}

		// it is. cool, run it!
		go cmd.Run(ctx, &b, &msg)
	}
}