0

Compare commits

...

7 Commits

Author SHA1 Message Date
eleksir
a21d7216ab Update TODO.md 2025-04-19 19:06:56 +03:00
eleksir
ed81685c09 [WIP] Implemented !admin chan_msg setting command 2025-04-19 19:06:37 +03:00
eleksir
dda015e47e Add comands "weather", "погода", "w", "п", "погодка", "погадка" 2025-02-17 20:39:43 +03:00
eleksir
246ecf9a76 [WIP] Update TODO 2025-01-04 02:38:48 +03:00
eleksir
b923a30d17 [WIP] Implemented save goodbye message option 2025-01-04 02:38:11 +03:00
eleksir
cc860c6fca [WIP] Update TODO 2025-01-03 01:35:45 +03:00
eleksir
e54144d716 Update TODO 2025-01-02 15:12:09 +03:00
2 changed files with 106 additions and 18 deletions

55
TODO.md
View File

@@ -3,34 +3,65 @@
В качестве основы возьмём https://github.com/NicoNex/echotron
Для реализации телеграммного фронтэнда нам надо сделать:
-1. Перелелать layout на "стандартный" гошный.
0. Парсер конфига.
[V] Реализован начальный вариант парсера конфига.
1. Разгребальщик апдейтов и формирователь redis-ных сообщений.
[ ] Написана заглушка для парсера апдейтов bot api телеграма
[V] Написана заглушка для парсера апдейтов bot api телеграма
[V] Написан парсер прочих команд
2. Разгребальщик редисных сообщений и формирователь запросов в tg bot api.
[ ] Написан черновой вариант рагребателя
[V] Написан черновой вариант разгребателя
[ ] Написан мигратор для группового чата. (апгрейд до супергруппы, до чата с тредами)
3. Обработчик группы команд admin, сохранение настроек в pebbledb.
1 цензор сообщений определённого типа.
1 [V] [V] цензор сообщений определённого типа.
2 фортунка каждое утро. (+ добавить время, относительно gmt, когда показывать фортунку).
2 [ ] [V] фортунка каждое утро. (+ добавить время, относительно gmt, когда показывать фортунку).
3 Приветствие новых участников
3 [V] [V] Приветствие новых участников
4 oboobs
4 [V] [V] Прощание с теми, кто ушёл
5 obutts
5 [ ] [ ] oboobs
6 chan_msg
6 [ ] [ ] obutts
7 user ban
7 [V] [V] chan_msg (Пока что бот сам удяляет сообщения от таких имперсонализированных пользователей, однако в прроде
есть возможность таких персонажей банить, см banChatSenderChat()/unbanChatSenderChat()
https://core.telegram.org/bots/api#banchatsenderchat, надо ли реализовывать такой бан - над этим надо ещё
подумать.)
8 user mute
4. help
8 [ ] [ ] user ban
5. Readme.txt
9 [ ] [ ] user mute
4. [V] help
5. [V] help admin
6. [ ] Readme
7. [ ] Поддержать миграцию групп в супергруппы (итд, там меняется id и надо перекидывать настройки на новый id)
8. [ ] Поддержать парсинг ошибок отправки сообщений в телегу (в т.ч. мигратор для группового чата, также внятные сообщения в лог, если бот замьючен)
9. [ ] Поддержать leaveChat(), чтобы бот мог легально и самостоятельно покинуть чят.
10. [ ] ставить реакцию thumbsup на спасибо, пожалуйста итд, ставить сердечко, если похвалили - молодц, красава итд. (setMessageReaction() на соответствующий ответ на сообщение)
11. [ ] отслеживать участников чятика, чтобы была возможность мьютить, банить, узнавать инфу по разным участникам чятика.
12. [ ] промоут/демоут участника до админа
frontend -> router -> service -> frontend

View File

@@ -496,7 +496,7 @@ func cmdParser(me echotron.APIResponseUser, cmd *echotron.Update) (bool, error)
"кис", "drink", "праздник", "fox", "лис", "frog", "лягушка", "horse", "лошадь", "лошадка", "monkeyuser",
"owl", "сова", "сыч", "rabbit", "bunny", "кролик", "snail", "улитка", "tits", "boobs", "tities", "boobies",
"сиси", "сисечки", "butt", "booty", "ass", "попа", "попка", "xkcd", "dig", "копать", "fish", "fishing",
"рыба", "рыбка", "рыбалка", "karma", "карма", "fuck",
"рыба", "рыбка", "рыбалка", "karma", "карма", "fuck", "weather", "погода", "w", "п", "погодка", "погадка",
}
for _, c := range cmds {
@@ -719,11 +719,11 @@ func Help(cmd *echotron.Update) (bool, error) {
help += fmt.Sprintf("%sroll | %sdice | %sкости - бросить кости", config.Csign, config.Csign, config.Csign)
help += fmt.Sprintf("%ssnail | %sулитка - улитка", config.Csign, config.Csign)
help += fmt.Sprintf("%sver | %sversion | %sверсия - что-то про версию ПО", config.Csign, config.Csign, config.Csign)
help += fmt.Sprintf("%sw город | %sп город - погода в указанном городе", config.Csign, config.Csign)
help += fmt.Sprintf("%sweather город - погода в указанном городе", config.Csign)
help += fmt.Sprintf("%sпогода город - погода в указанном городе", config.Csign)
help += fmt.Sprintf("%sпогодка город - погода в указанном городе", config.Csign)
help += fmt.Sprintf("%sпогадка город - погода в указанном городе", config.Csign)
help += fmt.Sprintf("%sw <город> | %sп <город> - погода в указанном городе", config.Csign, config.Csign)
help += fmt.Sprintf("%sweather <город> - погода в указанном городе", config.Csign)
help += fmt.Sprintf("%sпогода <город> - погода в указанном городе", config.Csign)
help += fmt.Sprintf("%sпогодка <город> - погода в указанном городе", config.Csign)
help += fmt.Sprintf("%sпогадка <город> - погода в указанном городе", config.Csign)
help += fmt.Sprintf("%sxkcd - рандомный стрип с сайта xkcd.ru", config.Csign)
help += fmt.Sprintf("%skarma фраза | %sкарма фраза - посмотреть карму фразы", config.Csign, config.Csign)
help += "```\n"
@@ -773,6 +773,10 @@ func Admin(msg *echotron.Update) (bool, error) {
answer += fmt.Sprintf("%sadmin приветствие - приветствуем ли новых участников чата\n", config.Csign)
answer += fmt.Sprintf("%sadmin greet # - где 1 - вкл, 0 - выкл приветствия новых участников чата\n", config.Csign)
answer += fmt.Sprintf("%sadmin приветствие # - где 1 - вкл, 0 - выкл приветствия новых участников чата\n", config.Csign)
answer += fmt.Sprintf("%sadmin goodbye - прощаемся ли с ушедшими участниками чата\n", config.Csign)
answer += fmt.Sprintf("%sadmin прощание - прощаемся ли с ушедшими участниками чата\n", config.Csign)
answer += fmt.Sprintf("%sadmin goodbye # - где 1 - вкл, 0 - выкл прощания с ушедшими участниками чата\n", config.Csign)
answer += fmt.Sprintf("%sadmin прощание # - где 1 - вкл, 0 - выкл прощания с ушедшими участниками чата\n", config.Csign)
answer += fmt.Sprintf("%sadmin oboobs # - где 1 - вкл, 0 - выкл плагина oboobs\n", config.Csign)
answer += fmt.Sprintf(
"%sadmin oboobs - показываем ли сисечки по просьбе участников чата (команды %stits, %stities, %sboobs, %sboobies, %sсиси, %sсисечки)\n",
@@ -1162,6 +1166,59 @@ func Admin(msg *echotron.Update) (bool, error) {
default:
answer += "Не понимаю, о чём ты."
}
case regexp.MustCompile("^(admin|админ)[[:space:]](goodbye|прощание)$").MatchString(c):
if GetSetting(fmt.Sprintf("%d", msg.Message.Chat.ID), "GoodbyeMsg") == "1" {
answer += "Прощаемся с ушедшими участниками чатика"
} else {
answer += "Не прощаемся с ушедшими участниками чатика"
}
case regexp.MustCompile("^(admin|админ)[[:space:]](goodbye|прощание)[[:space:]].*$").MatchString(c):
// Снова регулярка, это не оч эффективно, но зато просто.
cmdArray := regexp.MustCompile("[[:space:]]").Split(c, 3)
switch cmdArray[2] {
case "1":
if err := SaveSetting(fmt.Sprintf("%d", msg.Message.Chat.ID), "GoodbyeMsg", "1"); err != nil {
return true, err
}
answer += "Будем прощаться с ушедшими участниками чата"
case "0":
if err := SaveSetting(fmt.Sprintf("%d", msg.Message.Chat.ID), "GoodbyeMsg", "0"); err != nil {
return true, err
}
answer += "Не будем прощаться с ушедшими участниками чата"
default:
answer += "Не понимаю, о чём ты."
}
case regexp.MustCompile("^(admin|админ)[[:space:]](chan_msg)[[:space:]].*$").MatchString(c):
// Снова регулярка, это не оч эффективно, но зато просто.
cmdArray := regexp.MustCompile("[[:space:]]").Split(c, 3)
switch cmdArray[2] {
case "1":
if err := SaveSetting(fmt.Sprintf("%d", msg.Message.Chat.ID), "ChanMsg", "1"); err != nil {
return true, err
}
answer += "Будем удалять сообщения, написанные от имени канала"
case "0":
if err := SaveSetting(fmt.Sprintf("%d", msg.Message.Chat.ID), "ChanMsg", "0"); err != nil {
return true, err
}
answer += "Не будем удалять сообщения, написанные от имени канала"
default:
answer += "Не понимаю, о чём ты."
}
}
resp, err := tg.SendMessage(