aboutsummaryrefslogtreecommitdiff
path: root/telegram
diff options
context:
space:
mode:
Diffstat (limited to 'telegram')
-rw-r--r--telegram/client.go23
-rw-r--r--telegram/commands.go10
-rw-r--r--telegram/utils.go44
3 files changed, 30 insertions, 47 deletions
diff --git a/telegram/client.go b/telegram/client.go
index 6f6d719..49fc1ef 100644
--- a/telegram/client.go
+++ b/telegram/client.go
@@ -16,25 +16,6 @@ import (
"gosrc.io/xmpp"
)
-var logConstants = map[string]int32{
- ":fatal": 0,
- ":error": 1,
- ":warn": 2,
- ":info": 3,
- ":debug": 4,
- ":verbose": 5,
- ":all": 1023,
-}
-
-func stringToLogConstant(c string) int32 {
- level, ok := logConstants[c]
- if !ok {
- level = 0
- }
-
- return level
-}
-
// DelayedStatus describes an online status expiring on timeout
type DelayedStatus struct {
TimestampOnline int64
@@ -83,10 +64,6 @@ type clientLocks struct {
func NewClient(conf config.TelegramConfig, jid string, component *xmpp.Component, session *persistence.Session) (*Client, error) {
var options []client.Option
- options = append(options, client.WithLogVerbosity(&client.SetLogVerbosityLevelRequest{
- NewVerbosityLevel: stringToLogConstant(conf.Loglevel),
- }))
-
if conf.Tdlib.Client.CatchTimeout != 0 {
options = append(options, client.WithCatchTimeout(
time.Duration(conf.Tdlib.Client.CatchTimeout)*time.Second,
diff --git a/telegram/commands.go b/telegram/commands.go
index 87fff72..48c3615 100644
--- a/telegram/commands.go
+++ b/telegram/commands.go
@@ -422,7 +422,7 @@ func (c *Client) ProcessTransportCommand(cmdline string, resource string) string
text := rawCmdArguments(cmdline, 1)
_, err = c.client.ReportChat(&client.ReportChatRequest{
ChatId: contact.Id,
- Reason: &client.ChatReportReasonCustom{},
+ Reason: &client.ReportReasonCustom{},
Text: text,
})
if err != nil {
@@ -710,18 +710,18 @@ func (c *Client) ProcessChatCommand(chatID int64, cmdline string) (string, bool)
}
// blacklists current user
case "block":
- _, err := c.client.ToggleMessageSenderIsBlocked(&client.ToggleMessageSenderIsBlockedRequest{
+ _, err := c.client.SetMessageSenderBlockList(&client.SetMessageSenderBlockListRequest{
SenderId: &client.MessageSenderUser{UserId: chatID},
- IsBlocked: true,
+ BlockList: &client.BlockListMain{},
})
if err != nil {
return err.Error(), true
}
// unblacklists current user
case "unblock":
- _, err := c.client.ToggleMessageSenderIsBlocked(&client.ToggleMessageSenderIsBlockedRequest{
+ _, err := c.client.SetMessageSenderBlockList(&client.SetMessageSenderBlockListRequest{
SenderId: &client.MessageSenderUser{UserId: chatID},
- IsBlocked: false,
+ BlockList: nil,
})
if err != nil {
return err.Error(), true
diff --git a/telegram/utils.go b/telegram/utils.go
index 6edea31..b22f156 100644
--- a/telegram/utils.go
+++ b/telegram/utils.go
@@ -343,20 +343,28 @@ func (c *Client) formatSender(message *client.Message) string {
}
func (c *Client) getMessageReply(message *client.Message) (reply *gateway.Reply, replyMsg *client.Message) {
- if message.ReplyToMessageId != 0 {
+ if message.ReplyTo != nil && message.ReplyTo.MessageReplyToType() == client.TypeMessageReplyToMessage {
+ replyTo, _ := message.ReplyTo.(*client.MessageReplyToMessage)
+ // TODO: support replies from other chats
+ if message.ChatId != replyTo.ChatId {
+ log.Warn("Reply from other/unknown chat")
+ log.Debugf("replyTo: %#v", replyTo)
+ return
+ }
+
var err error
replyMsg, err = c.client.GetMessage(&client.GetMessageRequest{
ChatId: message.ChatId,
- MessageId: message.ReplyToMessageId,
+ MessageId: replyTo.MessageId,
})
if err != nil {
log.Errorf("<error fetching message: %s>", err.Error())
return
}
- replyId, err := gateway.IdsDB.GetByTgIds(c.Session.Login, c.jid, message.ChatId, message.ReplyToMessageId)
+ replyId, err := gateway.IdsDB.GetByTgIds(c.Session.Login, c.jid, message.ChatId, replyTo.MessageId)
if err != nil {
- replyId = strconv.FormatInt(message.ReplyToMessageId, 10)
+ replyId = strconv.FormatInt(replyTo.MessageId, 10)
}
reply = &gateway.Reply{
Author: fmt.Sprintf("%v@%s", c.getSenderId(replyMsg), gateway.Jid.Full()),
@@ -417,30 +425,27 @@ func (c *Client) formatMessage(chatID int64, messageID int64, preview bool, mess
}
func (c *Client) formatForward(fwd *client.MessageForwardInfo) string {
- switch fwd.Origin.MessageForwardOriginType() {
- case client.TypeMessageForwardOriginUser:
- originUser := fwd.Origin.(*client.MessageForwardOriginUser)
+ switch fwd.Origin.MessageOriginType() {
+ case client.TypeMessageOriginUser:
+ originUser := fwd.Origin.(*client.MessageOriginUser)
return c.formatContact(originUser.SenderUserId)
- case client.TypeMessageForwardOriginChat:
- originChat := fwd.Origin.(*client.MessageForwardOriginChat)
+ case client.TypeMessageOriginChat:
+ originChat := fwd.Origin.(*client.MessageOriginChat)
var signature string
if originChat.AuthorSignature != "" {
signature = fmt.Sprintf(" (%s)", originChat.AuthorSignature)
}
return c.formatContact(originChat.SenderChatId) + signature
- case client.TypeMessageForwardOriginHiddenUser:
- originUser := fwd.Origin.(*client.MessageForwardOriginHiddenUser)
+ case client.TypeMessageOriginHiddenUser:
+ originUser := fwd.Origin.(*client.MessageOriginHiddenUser)
return originUser.SenderName
- case client.TypeMessageForwardOriginChannel:
- channel := fwd.Origin.(*client.MessageForwardOriginChannel)
+ case client.TypeMessageOriginChannel:
+ channel := fwd.Origin.(*client.MessageOriginChannel)
var signature string
if channel.AuthorSignature != "" {
signature = fmt.Sprintf(" (%s)", channel.AuthorSignature)
}
return c.formatContact(channel.ChatId) + signature
- case client.TypeMessageForwardOriginMessageImport:
- originImport := fwd.Origin.(*client.MessageForwardOriginMessageImport)
- return originImport.SenderName
}
return "Unknown forward type"
}
@@ -890,11 +895,12 @@ func (c *Client) messageToPrefix(message *client.Message, previewString string,
}
}
// reply to
- if message.ReplyToMessageId != 0 {
+ if message.ReplyTo != nil && message.ReplyTo.MessageReplyToType() == client.TypeMessageReplyToMessage {
+ replyTo, _ := message.ReplyTo.(*client.MessageReplyToMessage)
if len(prefix) > 0 {
replyStart = c.countCharsInLines(&prefix) + (len(prefix)-1)*len(messageHeaderSeparator)
}
- replyLine := "reply: " + c.formatMessage(message.ChatId, message.ReplyToMessageId, true, replyMsg)
+ replyLine := "reply: " + c.formatMessage(message.ChatId, replyTo.MessageId, true, replyMsg)
prefix = append(prefix, replyLine)
replyEnd = replyStart + utf8.RuneCountInString(replyLine)
if len(prefix) > 0 {
@@ -1116,7 +1122,7 @@ func (c *Client) ProcessOutgoingMessage(chatID int64, text string, returnJid str
tgMessage, err := c.client.SendMessage(&client.SendMessageRequest{
ChatId: chatID,
- ReplyToMessageId: reply,
+ ReplyTo: &client.InputMessageReplyToMessage{MessageId: reply},
InputMessageContent: content,
})
if err != nil {