func (cmd endSelection) Execute(message tgbotapi.Message) error { var selection database.Selection err := database.DB.Get(&selection, ` select * from selection where active = 1 and chat_id = $1 `, message.Chat.ID) if err != nil { return err } u := database.User{} err = u.Load(message.From.ID) if err == sql.ErrNoRows || selection.UserID != u.ID { return cmd.QuickReply(message, "You did not create the active selection in this channel!") } _, err = database.DB.Exec(` update selection set active = 0 where chat_id = $1 `, message.Chat.ID) if err != nil { return err } return cmd.QuickReply(message, "Current selection was ended.") }
func (cmd selectItem) ExecuteWaiting(message tgbotapi.Message) error { cmd.ReleaseWaiting(message.From.ID) user := database.User{} err := user.Load(message.From.ID) if err != nil && err != sql.ErrNoRows { return err } else if err == sql.ErrNoRows { if err = user.Init(message.From); err != nil { return err } } var selection database.Selection err = database.DB.Get(&selection, ` select * from selection where chat_id = $1 and active = 1 `, message.Chat.ID) if err != nil { return err } var item database.SelectionItem err = database.DB.Get(&item, ` select * from selection_item where item = $1 and selection_id = $2 `, message.Text, selection.ID) if err != nil { return err } _, err = database.DB.Exec(` delete from selection_vote where user_id = $1 and selection_id = $2 `, user.ID, selection.ID) if err != nil { return err } _, err = database.NewSelectionVote(user.ID, selection.ID, item.ID) if err != nil { return err } return cmd.QuickReply(message, "Added selection!") }
func (cmd createSelection) ExecuteWaiting(message tgbotapi.Message) error { cmd.ReleaseWaiting(message.From.ID) user := database.User{} err := user.Load(message.From.ID) if err != nil && err != sql.ErrNoRows { return err } else if err == sql.ErrNoRows { if err = user.Init(message.From); err != nil { return err } } items := strings.Split(message.Text, "\n") selection, err := database.NewSelection(user.ID, message.Chat.ID) if err != nil { return err } num := 0 for _, item := range items { if item[0] == '!' { _, err = database.DB.Exec(` update selection set title = $1 where id = $2 `, item[1:], selection.ID) if err != nil { return err } continue } _, err := database.NewSelectionItem(selection.ID, item) if err != nil { return err } num++ } return cmd.QuickReply(message, "Added "+strconv.Itoa(num)+" items to selection!") }