[WIP] Split message by types
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user