package main import ( "fmt" "log" "math/rand" "time" "git.nefrace.ru/nefrace/nechotron" "git.nefrace.ru/nefrace/tongo" ) // Docs func handleMe(u *nechotron.Update, text string) error { u.DeleteMessage() _, err := u.AnswerMarkdown(fmt.Sprintf("_*%s* %s_", nechotron.EscapeMd2(u.From().FirstName), nechotron.EscapeMd2(text))) return err } var helpText = ` Вот мои команды: %s Время сборки бота: %s` func handleHelp(u *nechotron.Update, text string) error { commands := nechotron.MakeCommandList("`%s` \\- _%s_\n", commandHelp, commandMe) _, err := u.AnswerMarkdown(fmt.Sprintf(helpText, commands, BuildTime)) return err } func handleSay(u *nechotron.Update, text string) error { u.DeleteMessage() if text == "" { return nil } _, err := u.AnswerMarkdown(fmt.Sprintf("*_%s_*", nechotron.EscapeMd2(text))) return err } func handleOfftop(u *nechotron.Update) error { text := "Держите [ссылку на оффтоп](%s)\\!" offtopLink := "https://t.me/Godot_Engine_Offtop" offtopAnswers, err := tongo.NewStore[TriggerText](db).GetMany(u.Ctx, tongo.E("trigger", "offtop")) if err == nil { if len(offtopAnswers) > 0 { text = offtopAnswers[rand.Intn(len(offtopAnswers)-1)].Text } } offtopUrl, err := tongo.NewStore[Config](db).GetOne(u.Ctx, tongo.E("name", "offtop_url")) if err == nil { offtopLink = offtopUrl.Value.(string) } text = fmt.Sprintf(text, offtopLink) kb := nechotron.NewInlineKeyboard().Row(nechotron.InButtonCallback("Спасибо, не надо", "delete")).Markup() opts := nechotron.NewOptions(). MarkdownV2(). ReplyTo(u.MessageID()). ReplyMarkup(kb). MessageOptions() u.AnswerText(text, opts) return nil } func handleDeleteCallback(u *nechotron.Update) error { u.DeleteMessage() return nil } func handleUsersImport(u *nechotron.Update) error { f, _ := u.Bot.GetFile(u.Message.Document.FileID) file, _ := u.Bot.DownloadFile(f.Result.FilePath) log.Println(string(file)) return nil } func handleRegisterFeed(u *nechotron.Update, _ string) error { feedChats := tongo.NewStore[FeedChat](db) chat, err := feedChats.GetOne(u.Ctx, tongo.E("chatid", u.ChatID())) if err != nil { chat = &FeedChat{ Item: tongo.NewID(), ChatID: u.ChatID(), Title: u.Message.Chat.Title, ThreadID: u.Message.ThreadID, } feedChats.InsertOne(u.Ctx, chat) res, _ := u.AnswerPlain("Чат зарегистрирован для рассылки") go func() { time.Sleep(10 * time.Second) u.Bot.DeleteMessage(u.ChatID(), res.Result.ID) }() } return nil } func handleDeleteFeed(u *nechotron.Update, _ string) error { feedChats := tongo.NewStore[FeedChat](db) chat, err := feedChats.GetOne(u.Ctx, tongo.E("chatid", u.ChatID())) if err != nil { res, _ := u.AnswerPlain("Чат не подписан на рассылку") go func() { time.Sleep(10 * time.Second) u.Bot.DeleteMessage(u.ChatID(), res.Result.ID) }() return nil } feedChats.DeleteByID(u.Ctx, chat.Id) res, _ := u.AnswerPlain("Чат удалён из рассылки") go func() { time.Sleep(10 * time.Second) u.Bot.DeleteMessage(u.ChatID(), res.Result.ID) }() return nil }