[WIP] for SendGoodMorning make sense to iterate over chats only, introduce one more slice for it
This commit is contained in:
3
TODO.org
3
TODO.org
@@ -63,8 +63,5 @@
|
||||
- [X] регулярных компакций базы с настройками.
|
||||
- [ ] регулярного обслуживания таблиц с пользователями.
|
||||
|
||||
* TODO В функции AppendChatListDB для нового чата добавлять дефолтные значения настроек. [0/1]
|
||||
- [ ] done
|
||||
|
||||
# -*- mode: org; -*-
|
||||
# vim: ft=org
|
||||
|
||||
@@ -44,6 +44,9 @@ var (
|
||||
// chatList слайс со списоком чатов.
|
||||
chatList = []string{}
|
||||
|
||||
// chatGroupList слайс со списком групповых чатов.
|
||||
chatGroupList = []string{}
|
||||
|
||||
// tg is var for telegram api.
|
||||
tg echotron.API
|
||||
|
||||
|
||||
@@ -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-канал (в роутер).
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user