package matrixbot import ( "bytes" "encoding/json" "fmt" "github.com/google/uuid" "net/http" ) func SendMessage(token MatrixToken, roomId string, content interface{}) error { transactionId, err := uuid.NewRandom() if err != nil { return err } body, err := json.Marshal(content) if err != nil { return err } request, err := http.NewRequest( http.MethodPut, fmt.Sprintf("https://matrix-client.matrix.org/_matrix/client/v3/rooms/%s/send/%s/%s", roomId, "m.room.message", transactionId.String(), ), bytes.NewReader(body), ) if err != nil { panic(err) } request.Header.Set("Authorization", fmt.Sprintf("Bearer %s", token.AccessToken)) response, err := http.DefaultClient.Do(request) if err != nil { return err } if response.StatusCode < 200 || response.StatusCode >= 300 { return fmt.Errorf("request failed %d: %s", response.StatusCode, response.Status) } return err }