0

[WIP] Initially handle private messages

This commit is contained in:
eleksir
2024-02-27 01:46:18 +03:00
parent 231a255113
commit e75d9cabb5

View File

@@ -2,6 +2,7 @@ package main
import (
"encoding/json"
"fmt"
"strconv"
"github.com/NicoNex/echotron/v3"
@@ -135,15 +136,68 @@ func telegramMsgParser(msg *echotron.Update) {
// TODO: проверить, надо ли прощаться с ушедшим участником чата и попрощаться, если надо
}
var rmsg rMsg
var (
rmsg rMsg
errorOccured bool
)
me, err := tg.GetMe()
if err != nil {
log.Errorf("Unable to get info about myself, %s", err)
errorOccured = true
}
if !me.Ok {
log.Errorf("Unable to get info about myself: %d %s", me.ErrorCode, me.Description)
errorOccured = true
}
if errorOccured {
return
}
switch msg.Message.Chat.Type {
case "private":
// Всё что можно было похэндлить, что не содержало текста, считаем, что обработали.
if msg.Message.Text == "" {
return
}
// handle private messages
rmsg.Misc.Answer = 1
// если фраза является командой - засылаем её в парсер команд
// Засылаем фразу в misc-канал (в роутер)
rmsg.Chatid = fmt.Sprintf("%d", msg.ChatID())
rmsg.Userid = fmt.Sprintf("%d", msg.Message.From.ID)
rmsg.Message = msg.Message.Text
rmsg.Mode = "private"
rmsg.Plugin = "telegram"
rmsg.From = "telegram"
rmsg.Misc.Csign = config.Csign
rmsg.Misc.Fwdcnt = 1
rmsg.Misc.Botnick = me.Result.Username
rmsg.Misc.Username = ""
rmsg.Misc.GoodMorning = 0
// TODO: детектить нужно ли форматировать ответ. Для этого фактически надо парсить простые команды, как минимум.
rmsg.Misc.Msgformat = 0
data, err := json.Marshal(rmsg)
if err != nil {
log.Warnf("Unable to to serialize message for redis: %s", err)
return
}
// Заталкиваем наш json в редиску
if err := redisClient.Publish(ctx, config.Redis.Channel, data).Err(); err != nil {
log.Warnf("Unable to send data to redis channel %s: %s", config.Redis.Channel, err)
} else {
log.Debugf("Sent msg to redis channel %s: %s", config.Redis.Channel, string(data))
}
case "group", "supergroup":
// handle public (super)group messages
// Здесь работает цензор, если он включён.