0

[WIP] Split message by types

This commit is contained in:
eleksir
2024-02-10 01:33:54 +03:00
parent 9eac899a5c
commit 1892960896
2 changed files with 48 additions and 8 deletions

View File

@@ -75,8 +75,8 @@ func redisMsgParser(msg string) {
j.Misc.Fwdcnt = 1
}
// j.Misc.GoodMorning может быть быть 1 или 0, по-умолчанию 0
// j.Misc.MsgFormat может быть быть 1 или 0, по-умолчанию 0
// j.Misc.GoodMorning может быть 1 или 0, по-умолчанию 0
// j.Misc.MsgFormat может быть 1 или 0, по-умолчанию 0
// j.Misc.Username можно не передавать, тогда будет пустая строка
// Отвалидировались, теперь вернёмся к нашим баранам.
@@ -92,9 +92,11 @@ func redisMsgParser(msg string) {
resp, err := tg.SendMessage(j.Message, chatid, opts)
if err != nil {
if err != nil || !resp.Ok {
// TODO: поддержать миграцию группы в супергруппу, поддержать вариант, когда бот замьючен.
// Красиво оформить ошибку, сполями итд, как tracedump, только ошибка.
// Красиво оформить ошибку, с полями итд, как tracedump, только ошибка.
// N.B. тут может быть сообщение о том, что группа превратилась в супергруппу, или что бот не имеет прав писать
// сообщения в чятик. Это надо бы отслеживать и хэндлить.
log.Errorf("Unable to send message to telegram api: %s", err)
log.Errorf("Response dump: %s", spew.Sdump(resp))
}
@@ -109,6 +111,43 @@ func telegramMsgParser(msg *echotron.Update) {
return
}
// Сообщение о том, что этот чятик изменился, например превратился в супергруппу.
if msg.Message.MigrateFromChatID < 0 && msg.Message.MigrateToChatID < 0 {
// TODO: поддержать миграцию настроек чата га новый chatId.
// TODO: подумать, что можно сделать с настройками бэкэндов. Кажись, ничего, но надо глянуть.
}
// Люди пришли в чят.
if msg.Message.NewChatMembers != nil {
// TODO: проверить, надо ли приветсвовать, выбрать одну из приветственных фраз, потянуть время, типа, мы пишем
// текст и поприветсвовать вновьприбывшего
}
// Человек ушёл из чата.
if msg.Message.LeftChatMember != nil {
// TODO: проверить, надо ли прощаться с ушедшим участником чата и попрощаться, если надо
}
switch msg.Message.Chat.Type {
case "private":
// handle private messages
// всегда ставим флажок, что надо отвечать.
// если фраза является командой - засылаем её в парсер команд
// Засылаем фразу в misc-канал (в роутер)
case "group", "supergroup":
// handle public (super)group messages
// Здесь работает цензор, если он включён.
// Здесь же, если человек ответил на авто-приветствие, это надо обнаруживать и пропускать.
// Здесь же, если фраза менее 3-х букв, просто игнорируем её
// Здесь же, если фраза является командой - засылаем её в парсер команд
// Здесь же, если фраза обращена к боту (ник или имя), выставляем флажок, что надо ответить
// Здесь же, пытаемся убрать из фразы ник или имя бота
// Засылаем фразу в misc-канал (в роутер)
case "channel":
// Тут мы ничего сделать не можем
}
return
}