0

[WIP] for SendGoodMorning make sense to iterate over chats only, introduce one more slice for it

This commit is contained in:
eleksir
2025-11-04 22:22:25 +03:00
parent 5471e09a24
commit 25f3ef0262
4 changed files with 25 additions and 9 deletions

View File

@@ -63,8 +63,5 @@
- [X] регулярных компакций базы с настройками.
- [ ] регулярного обслуживания таблиц с пользователями.
* TODO В функции AppendChatListDB для нового чата добавлять дефолтные значения настроек. [0/1]
- [ ] done
# -*- mode: org; -*-
# vim: ft=org

View File

@@ -44,6 +44,9 @@ var (
// chatList слайс со списоком чатов.
chatList = []string{}
// chatGroupList слайс со списком групповых чатов.
chatGroupList = []string{}
// tg is var for telegram api.
tg echotron.API

View File

@@ -31,7 +31,7 @@ var (
// SendGoodMorning отсылает сообщение "с добрым утром" (сейчас - фортунку). Предполагается, что оно прогоняется по
// всем желающим чатам раз в сутки, с утра. Утро отсчитывается от настроек локали в системе.
SendGoodMorning = func() {
for _, chatID := range chatList {
for _, chatID := range chatGroupList {
if GetSetting(chatID, "FortuneMsg") == "1" {
me, err := tg.GetMe()
// Засылаем фразу в misc-канал (в роутер).

View File

@@ -6,6 +6,7 @@ import (
"fmt"
"io/fs"
"slices"
"strings"
"aleesa-telegram-go/internal/log"
@@ -47,6 +48,9 @@ func FetchV(db *pebble.DB, key string) (string, error) {
}
// InitChatListDB открывает для пользования базу со списком чатов.
// Вторым слоем этой базы являются слайсы chatList и chatGroupList, по которыму можно в дальнейшем определять, известен
// ли даденный чат боту. По сути, слайс chatList активно пользуется в функции AppendChatListDB, а chatGroupList - в
// SendGoodMorning.
func InitChatListDB() error {
var (
err error
@@ -100,7 +104,7 @@ func InitChatListDB() error {
}
// AppendChatListDB добавляет чат в список известных боту. Можно добавлять чаты не глядя, дубликатов не добавится.
// Bot API нам такую информацию не даёт.
// Bot API нам не даёт информацию о том, на что подписан бот.
func AppendChatListDB(chatID string) error {
var err error
@@ -108,15 +112,21 @@ func AppendChatListDB(chatID string) error {
return err
}
if err = StoreKV(chatListDB, chatID, "{}"); err != nil {
if err = StoreKV(chatListDB, chatID, "1"); err != nil {
return fmt.Errorf("Unable to append %s to %s: %w", chatID, chatListDBName, err)
}
// TODO: fill in defaults!
// Не забываем актуализировать список чатов.
chatList = append(chatList, chatID)
slices.Sort(chatList)
chatList = slices.Compact(chatList)
// Если СhatID начинается с - это значит, что мы имеем дело именно с группой/супергруппой/каналом.
if strings.HasPrefix(chatID, "-") {
chatGroupList = append(chatGroupList, chatID)
slices.Sort(chatGroupList)
chatGroupList = slices.Compact(chatGroupList)
}
return err
}
@@ -190,8 +200,14 @@ func SaveSetting(chatID string, setting string, value string) error {
}
}
if err := StoreKV(settingsDB[database], setting, value); err != nil {
if err = StoreKV(settingsDB[database], setting, value); err != nil {
log.Errorf("Unable to save setting %s in database %s: %s", setting, database, err)
return err
}
if err = settingsDB[database].Flush(); err != nil {
log.Errorf("Unable to flush settings db for %s: %s", chatID, err)
}
return err