Compare commits
7 Commits
master
...
a21d7216ab
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a21d7216ab | ||
|
|
ed81685c09 | ||
|
|
dda015e47e | ||
|
|
246ecf9a76 | ||
|
|
b923a30d17 | ||
|
|
cc860c6fca | ||
|
|
e54144d716 |
55
TODO.md
55
TODO.md
@@ -3,34 +3,65 @@
|
|||||||
В качестве основы возьмём https://github.com/NicoNex/echotron
|
В качестве основы возьмём https://github.com/NicoNex/echotron
|
||||||
|
|
||||||
Для реализации телеграммного фронтэнда нам надо сделать:
|
Для реализации телеграммного фронтэнда нам надо сделать:
|
||||||
|
-1. Перелелать layout на "стандартный" гошный.
|
||||||
|
|
||||||
0. Парсер конфига.
|
0. Парсер конфига.
|
||||||
|
|
||||||
[V] Реализован начальный вариант парсера конфига.
|
[V] Реализован начальный вариант парсера конфига.
|
||||||
|
|
||||||
1. Разгребальщик апдейтов и формирователь redis-ных сообщений.
|
1. Разгребальщик апдейтов и формирователь redis-ных сообщений.
|
||||||
[ ] Написана заглушка для парсера апдейтов bot api телеграма
|
|
||||||
|
[V] Написана заглушка для парсера апдейтов bot api телеграма
|
||||||
|
|
||||||
|
[V] Написан парсер прочих команд
|
||||||
|
|
||||||
2. Разгребальщик редисных сообщений и формирователь запросов в tg bot api.
|
2. Разгребальщик редисных сообщений и формирователь запросов в tg bot api.
|
||||||
[ ] Написан черновой вариант рагребателя
|
|
||||||
|
[V] Написан черновой вариант разгребателя
|
||||||
|
|
||||||
|
[ ] Написан мигратор для группового чата. (апгрейд до супергруппы, до чата с тредами)
|
||||||
|
|
||||||
3. Обработчик группы команд admin, сохранение настроек в pebbledb.
|
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
|
||||||
|
|||||||
@@ -496,7 +496,7 @@ func cmdParser(me echotron.APIResponseUser, cmd *echotron.Update) (bool, error)
|
|||||||
"кис", "drink", "праздник", "fox", "лис", "frog", "лягушка", "horse", "лошадь", "лошадка", "monkeyuser",
|
"кис", "drink", "праздник", "fox", "лис", "frog", "лягушка", "horse", "лошадь", "лошадка", "monkeyuser",
|
||||||
"owl", "сова", "сыч", "rabbit", "bunny", "кролик", "snail", "улитка", "tits", "boobs", "tities", "boobies",
|
"owl", "сова", "сыч", "rabbit", "bunny", "кролик", "snail", "улитка", "tits", "boobs", "tities", "boobies",
|
||||||
"сиси", "сисечки", "butt", "booty", "ass", "попа", "попка", "xkcd", "dig", "копать", "fish", "fishing",
|
"сиси", "сисечки", "butt", "booty", "ass", "попа", "попка", "xkcd", "dig", "копать", "fish", "fishing",
|
||||||
"рыба", "рыбка", "рыбалка", "karma", "карма", "fuck",
|
"рыба", "рыбка", "рыбалка", "karma", "карма", "fuck", "weather", "погода", "w", "п", "погодка", "погадка",
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, c := range cmds {
|
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("%sroll | %sdice | %sкости - бросить кости", config.Csign, config.Csign, config.Csign)
|
||||||
help += fmt.Sprintf("%ssnail | %sулитка - улитка", 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("%sver | %sversion | %sверсия - что-то про версию ПО", config.Csign, config.Csign, config.Csign)
|
||||||
help += fmt.Sprintf("%sw город | %sп город - погода в указанном городе", config.Csign, config.Csign)
|
help += fmt.Sprintf("%sw <город> | %sп <город> - погода в указанном городе", config.Csign, config.Csign)
|
||||||
help += fmt.Sprintf("%sweather город - погода в указанном городе", 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("%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("%sxkcd - рандомный стрип с сайта xkcd.ru", config.Csign)
|
||||||
help += fmt.Sprintf("%skarma фраза | %sкарма фраза - посмотреть карму фразы", config.Csign, config.Csign)
|
help += fmt.Sprintf("%skarma фраза | %sкарма фраза - посмотреть карму фразы", config.Csign, config.Csign)
|
||||||
help += "```\n"
|
help += "```\n"
|
||||||
@@ -773,6 +773,10 @@ func Admin(msg *echotron.Update) (bool, error) {
|
|||||||
answer += fmt.Sprintf("%sadmin приветствие - приветствуем ли новых участников чата\n", config.Csign)
|
answer += fmt.Sprintf("%sadmin приветствие - приветствуем ли новых участников чата\n", config.Csign)
|
||||||
answer += fmt.Sprintf("%sadmin greet # - где 1 - вкл, 0 - выкл приветствия новых участников чата\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 приветствие # - где 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 # - где 1 - вкл, 0 - выкл плагина oboobs\n", config.Csign)
|
||||||
answer += fmt.Sprintf(
|
answer += fmt.Sprintf(
|
||||||
"%sadmin oboobs - показываем ли сисечки по просьбе участников чата (команды %stits, %stities, %sboobs, %sboobies, %sсиси, %sсисечки)\n",
|
"%sadmin oboobs - показываем ли сисечки по просьбе участников чата (команды %stits, %stities, %sboobs, %sboobies, %sсиси, %sсисечки)\n",
|
||||||
@@ -1162,6 +1166,59 @@ func Admin(msg *echotron.Update) (bool, error) {
|
|||||||
default:
|
default:
|
||||||
answer += "Не понимаю, о чём ты."
|
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(
|
resp, err := tg.SendMessage(
|
||||||
|
|||||||
Reference in New Issue
Block a user