Skip to content
This repository has been archived by the owner on Feb 26, 2023. It is now read-only.

Commit

Permalink
Run goroutine on every update
Browse files Browse the repository at this point in the history
Additionally, cleanup and simplify code to process tgbotapi.Update
  • Loading branch information
ilyaglow committed Dec 5, 2018
1 parent 0788c23 commit d316b89
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 41 deletions.
43 changes: 43 additions & 0 deletions process.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,49 @@ func (c *Client) sendReport(r *cortex.Report, callback *tgbotapi.CallbackQuery)
return err
}

func (c *Client) process(update *tgbotapi.Update) error {
if update.CallbackQuery != nil {
log.Printf(
"username: %s, id: %d, text: %s",
update.CallbackQuery.Message.From.UserName,
update.CallbackQuery.Message.From.ID,
update.CallbackQuery.Message.Text,
)
if err := c.processCallback(update.CallbackQuery); err != nil {
return err
}

cbcfg := tgbotapi.NewCallback(update.CallbackQuery.ID, "")
_, err := c.Bot.AnswerCallbackQuery(cbcfg)
return err
}

log.Printf(
"[%s] %s",
update.Message.From.UserName,
update.Message.Text,
)
msg := tgbotapi.NewMessage(update.Message.Chat.ID, "")
msg.ReplyToMessageID = update.Message.MessageID

if update.Message.IsCommand() &&
update.Message.Command() == "start" &&
!c.CheckAuth(update.Message.From) {

msg.Text = "Enter your password"
_, err := c.Bot.Send(msg)
return err
}

if c.CheckAuth(update.Message.From) {
err := c.processMessage(update.Message)
return err
}

err := c.Auth(update.Message)
return err
}

// processCallback analyzes observables with a selected set of analyzers
func (c *Client) processCallback(callback *tgbotapi.CallbackQuery) error {
var j cortex.Observable
Expand Down
45 changes: 4 additions & 41 deletions run.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,47 +25,10 @@ func (c *Client) Run() {
log.Printf("Users in database: %s", strings.Join(c.listUsers(), ","))

for update := range updates {

if update.CallbackQuery != nil {
log.Printf("username: %s, id: %d, text: %s", update.CallbackQuery.Message.From.UserName, update.CallbackQuery.Message.From.ID, update.CallbackQuery.Message.Text)
go func() {
if err := c.processCallback(update.CallbackQuery); err != nil {
log.Println(err)
}
cbcfg := tgbotapi.NewCallback(update.CallbackQuery.ID, "")
if _, err := c.Bot.AnswerCallbackQuery(cbcfg); err != nil {
log.Println(err)
}
}()
} else {
log.Printf("[%s] %s", update.Message.From.UserName, update.Message.Text)
msg := tgbotapi.NewMessage(update.Message.Chat.ID, "")
msg.ReplyToMessageID = update.Message.MessageID

if update.Message.IsCommand() &&
update.Message.Command() == "start" &&
!c.CheckAuth(update.Message.From) {
c.log("run: new unauthorized user")
msg.Text = "Enter your password"
if _, err := c.Bot.Send(msg); err != nil {
log.Println(err)
}
continue
}

if c.CheckAuth(update.Message.From) {
c.log("run: auth succeeded")
go func() {
if err := c.processMessage(update.Message); err != nil {
log.Println(err)
}
}()
} else {
c.log("run: wrong password from the user")
if err := c.Auth(update.Message); err != nil {
log.Println(err)
}
go func(upd *tgbotapi.Update) {
if err := c.process(upd); err != nil {
log.Println(err)
}
}
}(&update)
}
}

0 comments on commit d316b89

Please sign in to comment.