SendTracked returns a string id for a send message, and Update can be used to change that message
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user