diff --git a/telegram/handlers.go b/telegram/handlers.go index 70fa8cf..b08148a 100644 --- a/telegram/handlers.go +++ b/telegram/handlers.go @@ -405,7 +405,10 @@ func (c *Client) updateMessageContent(update *client.UpdateMessageContent) { } for _, jid := range jids { if safeToSend { - gateway.SendMessage(jid, from, text.String(), id, c.xmpp, nil, 0, replaceId, isCarbon, isMUC, false, originalFrom, "", "", "", nil) + gateway.SendMessage(jid, from, c.xmpp, + gateway.SMBody(text.String()), gateway.SMId(id), gateway.SMReplaceId(replaceId), + gateway.SMIsCarbon(isCarbon), gateway.SMIsGroupchat(isMUC), gateway.SMOriginalFrom(originalFrom), + ) } else { gateway.SendMUCAnnouncement(jid, from, text.String(), nickname, id, c.xmpp) } diff --git a/telegram/utils.go b/telegram/utils.go index 4884557..4f68bd6 100644 --- a/telegram/utils.go +++ b/telegram/utils.go @@ -2060,9 +2060,17 @@ func (c *Client) SendMessageToGateway(chatId int64, message *client.Message, id } for _, jid := range jids { - gateway.SendMessageWithOOB(jid, from, text, sId, c.xmpp, reply, timestamp, oob, "", isCarbon, isGroupchat, c.Session.Receipts, originalFrom, stanzaId, mamQueryId, mucJID, mucUserItem) + commonArgs := []args.V{ + gateway.SMReply(reply), gateway.SMTimestamp(timestamp), gateway.SMIsCarbon(isCarbon), + gateway.SMIsGroupchat(isGroupchat), gateway.SMRequestReceipt(c.Session.Receipts), + gateway.SMOriginalFrom(originalFrom), gateway.SMMamQueryId(mamQueryId), + gateway.SMMucJID(mucJID), gateway.SMMucUserItem(mucUserItem), + } + gateway.SendMessage(jid, from, c.xmpp, append(commonArgs, + gateway.SMBody(text), gateway.SMId(sId), gateway.SMStanzaId(stanzaId), gateway.SMOOB(oob))...) if auxText != "" { - gateway.SendMessage(jid, from, auxText, auxId, c.xmpp, reply, timestamp, "", isCarbon, isGroupchat, c.Session.Receipts, originalFrom, auxId, mamQueryId, mucJID, mucUserItem) + gateway.SendMessage(jid, from, c.xmpp, append(commonArgs, + gateway.SMBody(auxText), gateway.SMId(auxId), gateway.SMStanzaId(auxId))...) } } c.UpdateLastChatMessageId(chatId, sId) @@ -2951,23 +2959,9 @@ func (c *Client) sendMessagesReverse(chatID int64, messages []*client.Message, p } for _, to := range plainTos { - gateway.SendMessage( - to, - from, - c.formatMessage(0, 0, false, !isMUC, message), - sId, - c.xmpp, - reply, - 0, - "", - false, - isMUC, - false, - originalFrom, - "", - "", - "", - nil, + gateway.SendMessage(to, from, c.xmpp, + gateway.SMBody(c.formatMessage(0, 0, false, !isMUC, message)), gateway.SMId(sId), + gateway.SMReply(reply), gateway.SMIsGroupchat(isMUC), gateway.SMOriginalFrom(originalFrom), ) } } else { diff --git a/xmpp/gateway/gateway.go b/xmpp/gateway/gateway.go index 1bb8ae7..73b7df0 100644 --- a/xmpp/gateway/gateway.go +++ b/xmpp/gateway/gateway.go @@ -128,13 +128,10 @@ func ResourcePrep(resource string) (string, error) { return resourcePrepProfile.Prepare(resource) } -// SendMessage creates and sends a message stanza -func SendMessage(to, from, body, id string, component *xmpp.Component, reply *Reply, timestamp int64, replaceId string, isCarbon, isGroupchat, requestReceipt bool, originalFrom, stanzaId, mamQueryId, mucJID string, mucUserItem *MUCUserItem) { - sendMessageWrapper(to, from, component, - SMBody(body), SMId(id), SMReply(reply), SMTimestamp(timestamp), SMReplaceId(replaceId), - SMIsCarbon(isCarbon), SMIsGroupchat(isGroupchat), SMRequestReceipt(requestReceipt), - SMOriginalFrom(originalFrom), SMStanzaId(stanzaId), SMMamQueryId(mamQueryId), SMMucJID(mucJID), SMMucUserItem(mucUserItem), - ) +// SendMessage creates and sends a message stanza. See the SM* option +// constructors below (SMBody, SMReply, SMOOB, ...) for what can be set. +func SendMessage(to, from string, component *xmpp.Component, args ...args.V) { + sendMessageWrapper(to, from, component, args...) } // SendServiceMessage creates and sends a simple message stanza from transport @@ -200,15 +197,6 @@ func SendErrorMessageWithBody(to, from, body, errorText, id string, code int, is sendMessageWrapper(to, from, component, SMBody(body), SMErrorText(errorText), SMId(id), SMIsGroupchat(isGroupchat), SMErrorCode(code)) } -// SendMessageWithOOB creates and sends a message stanza with OOB URL -func SendMessageWithOOB(to, from, body, id string, component *xmpp.Component, reply *Reply, timestamp int64, oob, replaceId string, isCarbon, isGroupchat, requestReceipt bool, originalFrom, stanzaId, mamQueryId, mucJID string, mucUserItem *MUCUserItem) { - sendMessageWrapper(to, from, component, - SMBody(body), SMId(id), SMReply(reply), SMTimestamp(timestamp), SMOOB(oob), SMReplaceId(replaceId), - SMIsCarbon(isCarbon), SMIsGroupchat(isGroupchat), SMRequestReceipt(requestReceipt), - SMOriginalFrom(originalFrom), SMStanzaId(stanzaId), SMMamQueryId(mamQueryId), SMMucJID(mucJID), SMMucUserItem(mucUserItem), - ) -} - // SendSubjectMessage creates and sends a MUC subject func SendSubjectMessage(to, from, subject, id string, component *xmpp.Component, timestamp int64) { sendMessageWrapper(to, from, component, SMSubject(subject), SMId(id), SMTimestamp(timestamp), SMIsGroupchat(true), SMForceSubject(true)) diff --git a/xmpp/handlers.go b/xmpp/handlers.go index e08f8b4..0c05c6f 100644 --- a/xmpp/handlers.go +++ b/xmpp/handlers.go @@ -344,7 +344,7 @@ func HandleMessage(s xmpp.Sender, p stanza.Packet) { } } else if isCommand && isGroupchat && session.Session.MUC { // pong outgoing commands back to groupchats - gateway.SendMessage(msg.From, msg.To + "/" + session.GetMUCNickname(0), text, "", component, nil, 0, "", false, isGroupchat, false, "", "", "", "", nil) + gateway.SendMessage(msg.From, msg.To+"/"+session.GetMUCNickname(0), component, gateway.SMBody(text), gateway.SMIsGroupchat(isGroupchat)) } else { /* // if a message failed to edit on Telegram side, match new XMPP ID with old Telegram ID anyway