SendTracked returns a string id for a send message, and Update can be used to change that message

This commit is contained in:
bel
2022-01-17 20:05:02 -07:00
parent f2c9602d70
commit d4c1e20230
3 changed files with 89 additions and 34 deletions

View File

@@ -87,6 +87,7 @@ func (m *Matrix) Receive() ([]Message, error) {
logtr.Debugf("%s => {Start:%s End:%v};; %v, (%d)", m.Continuation(), result.Start, result.End, err, len(result.Chunk))
m.continuation = result.End
for _, event := range result.Chunk {
logtr.Verbosef("matrix event: %+v", event)
if _, ok := matrixIDs[event.Sender]; !ok {
continue
}
@@ -124,19 +125,65 @@ func (m *Matrix) Receive() ([]Message, error) {
return messages, nil
}
func (m Matrix) Send(text string) error {
func (m Matrix) Update(id, text string) error {
if m.mock {
logtr.Infof("matrix.Send(%s)", text)
logtr.Infof("matrix.Update(%s)", text)
return nil
}
c, err := m.getclient()
if err != nil {
return err
}
_, err = c.SendText(m.room, text)
type MRelatesTo struct {
EventID string `json:"event_id"`
RelType string `json:"rel_type"`
}
type NewContent struct {
Body string `json:"body"`
MsgType string `json:"msgtype"`
}
type RelatesToRoomMessage struct {
Body string `json:"body"`
MsgType string `json:"msgtype"`
MRelatesTo MRelatesTo `json:"m.relates_to"`
MNewContent NewContent `json:"m.new_content"`
}
_, err = c.SendMessageEvent(m.room, "m.room.message", RelatesToRoomMessage{
Body: "",
MsgType: "m.text",
MNewContent: NewContent{
Body: text,
MsgType: "m.text",
},
MRelatesTo: MRelatesTo{
EventID: id,
RelType: "m.replace",
},
})
return err
}
func (m Matrix) Send(text string) error {
_, err := m.SendTracked(text)
return err
}
func (m Matrix) SendTracked(text string) (string, error) {
if m.mock {
logtr.Infof("matrix.SendTracked(%s)", text)
return "", nil
}
c, err := m.getclient()
if err != nil {
return "", err
}
resp, err := c.SendText(m.room, text)
if err != nil {
return "", err
}
return resp.EventID, nil
}
func (m Matrix) SendImage(uri string) error {
if m.mock {
logtr.Infof("matrix.SendImage(%s)", uri)