Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion NAMESPACE
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ export(canvis_html)
export(cerca_versio_canvis)
export(comprova_canvis_osm)
export(consulta_etiquetes_osm)
export(missatge_telegram)
export(envia_missatge_telegram)
export(missatge_resum_informes)
export(modifica_etiquetes_osm)
export(versio_canvis_html)
60 changes: 58 additions & 2 deletions R/telegram.R
Original file line number Diff line number Diff line change
@@ -1,13 +1,69 @@
#' Envia un missatge a al grup de Telegram de la `Comunitat en catal\u00E0 d'OpenStreetMap`

#' Crea missatge de resum d'informes
#'
#' @param canvis llista amb objectes produits per [comprova_canvis_osm()]. Si els elements tenen nom, s'usar<c3><a0> com
#' a nom de la fila de la taula resum.
#' @param pagina_informe nom de la p<c3><a0>gina de l'informe per generar l'enlla<c3><a7> a la web.
#' @param etiquetes Si no <c3><a9>s `NULL`, quan es fa el recompte de canvis, nom<c3><a9>s t<c3><a9> en compte les
#' etiquetes que quadren amb aquesta expressi<c3><b3> regular.
#'
#' @returns Text en format Markdown amb un missatge resum dels informes.
#' @export
#'
#' @examples
missatge_resum_informes <- function(canvis, pagina_informe, etiquetes){
n_canvis <- if (missing(etiquetes)) {
sapply(canvis, function(x) {
nrow(x$change_count)
})
} else {
sapply(canvis, function(x) {
df <- x$comparison_table_diff_numbers
sum(apply(df[, grep(etiquetes, names(df))], 1, function(y) any(y != 0)))
})
}

names(n_canvis) <- names(canvis)
n_obj <- setNames(vapply(canvis, function(x) x$change_summary[["old_obs"]], FUN.VALUE = 1), nm = names(n_canvis))
df <- data.frame(dif = n_canvis, obj = n_obj)
# n_obj <- n_obj[n_canvis > 0]
# n_canvis <- n_canvis[n_canvis > 0]
total_canvis <- sum(n_canvis)

missatge <- paste0(
"<e2><9a><a0><ef><b8><8f> Hi ha ", total_canvis,
if (total_canvis > 1) " objectes" else " objecte amb canvis"
)
if (missing(pagina_informe)) {
missatge <- paste0(missatge, ".")
} else {
missatge <- paste0(
missatge, " a [", pagina_informe, "](https://osm-catalan.github.io/monitorOSM/web/", pagina_informe, ".html)."
)
}
missatge <- paste0(missatge, "`\n", paste(capture.output(print(knitr::kable(df))), collapse = "\n"), "\n`")

return(missatge)
}


#' Envia un missatge a un xat de Telegram
#'
#' Aquest repositori est<c3><a0> configurat per enviar missatges al grup de Telegram de la
#' `Comunitat en catal\u00E0 d'OpenStreetMap` amb el bot `monitorOSM_bot`.
#'
#' @param missatge Text del missatge.
#' @param parse_mode El missatge s'interpreta com a `Markdown` o `HTML`.
#'
#' On i amb quin bot s'envia el missatge es configura amb les variables d'entorn `R_TELEGRAM_BOT_MONITOROSM_BOT` i
#' `TME_OSMCAT_CHATID`. Per usar la funci<c3><b3> a github, cal configurar les accions perqu<c3><a8> carreguin aquestes variables
#' d'entorn a partir dels secrets del repositori de github.
#'
#' @return
#' @export
#'
#' @examples
missatge_telegram <- function(missatge = "Hi ha canvis a [monitorOSM](https://osm-catalan.github.io/monitorOSM).",
envia_missatge_telegram <- function(missatge = "Hi ha canvis a [monitorOSM](https://osm-catalan.github.io/monitorOSM).",
parse_mode = "Markdown") {
if (!requireNamespace("telegram.bot", quietly = TRUE)) {
stop(
Expand Down
2 changes: 1 addition & 1 deletion README.Rmd
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ format:

<!-- README.md is generated from README.Rmd. Please edit that file and devtools::build_rmd("README.Rmd")-->

```{r, include = FALSE}
```{r config, include = FALSE}
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>",
Expand Down
24 changes: 24 additions & 0 deletions man/envia_missatge_telegram.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

23 changes: 23 additions & 0 deletions man/missatge_resum_informes.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

19 changes: 0 additions & 19 deletions man/missatge_telegram.Rd

This file was deleted.

21 changes: 9 additions & 12 deletions web/internacional.qmd
Original file line number Diff line number Diff line change
Expand Up @@ -95,18 +95,15 @@ if (
# format(Sys.Date(), format = "%u") %in% "5" && # Només els divendres
Sys.getenv("GITHUB_WORKFLOW") == "Render and Publish"
) {
names(n_canvis) <- c("estats", "capitals", "mars")
n_obj <- setNames(sapply(list(estats, capitals, mars), nrow), nm = names(n_canvis))
df <- data.frame(dif = n_canvis, obj = n_obj)
# n_obj <- n_obj[n_canvis > 0]
# n_canvis <- n_canvis[n_canvis > 0]
total_canvis <- sum(n_canvis)

missatge <- paste0(
"⚠️ Hi ha ", total_canvis, if (total_canvis > 1) " objectes" else " objecte",
" amb canvis a [Internacional](https://osm-catalan.github.io/monitorOSM/web/internacional.html).",
"`\n", paste(capture.output(print(knitr::kable(df))), collapse = "\n"), "\n`"
missatge <- missatge_resum_informes(
list(
estats = canvis_estats,
capitals = canvis_capitals,
mars = canvis_mars
),
pagina_informe = "internacional",
etiquetes = "name:ca"
)
m <- missatge_telegram(missatge = missatge)
m <- envia_missatge_telegram(missatge = missatge)
}
```
21 changes: 9 additions & 12 deletions web/limits.qmd
Original file line number Diff line number Diff line change
Expand Up @@ -92,18 +92,15 @@ if (
# format(Sys.Date(), format = "%u") %in% "5" && # Només els divendres
Sys.getenv("GITHUB_WORKFLOW") == "Render and Publish"
) {
names(n_canvis) <- c("PPCC", "territoris", "comarques", "municipis")
n_obj <- setNames(sapply(list(PPCC, territoris, comarques, municipis), nrow), nm = names(n_canvis))
df <- data.frame(dif = n_canvis, obj = n_obj)
# n_obj <- n_obj[n_canvis > 0]
# n_canvis <- n_canvis[n_canvis > 0]
total_canvis <- sum(n_canvis)

missatge <- paste0(
"⚠️ Hi ha ", total_canvis, if (total_canvis > 1) " objectes" else " objecte",
" amb canvis a [limits](https://osm-catalan.github.io/monitorOSM/web/limits.html).",
"`\n", paste(capture.output(print(knitr::kable(df))), collapse = "\n"), "\n`"
missatge <- missatge_resum_informes(
list(
PPCC = canvis_ppcc,
territoris = canvis_territoris,
comarques = canvis_comarques,
municipis = canvis_municipis
),
pagina_informe = "limits"
)
m <- missatge_telegram(missatge = missatge)
m <- envia_missatge_telegram(missatge = missatge)
}
```
19 changes: 7 additions & 12 deletions web/localitats.qmd
Original file line number Diff line number Diff line change
Expand Up @@ -68,18 +68,13 @@ if (
# format(Sys.Date(), format = "%u") %in% "5" && # Només els divendres
Sys.getenv("GITHUB_WORKFLOW") == "Render and Publish"
) {
names(n_canvis) <- c("admin_centre", "loc_ref")
n_obj <- setNames(sapply(list(loc_admin_centre_municipis, loc_ref), nrow), nm = names(n_canvis))
df <- data.frame(dif = n_canvis, obj = n_obj)
# n_obj <- n_obj[n_canvis > 0]
# n_canvis <- n_canvis[n_canvis > 0]
total_canvis <- sum(n_canvis)

missatge <- paste0(
"⚠️ Hi ha ", total_canvis, if (total_canvis > 1) " objectes" else " objecte",
" amb canvis a [localitats](https://osm-catalan.github.io/monitorOSM/web/localitats.html).",
"`\n", paste(capture.output(print(knitr::kable(df))), collapse = "\n"), "\n`"
missatge <- missatge_resum_informes(
list(
admin_centre = canvis_loc_capital_municipis,
loc_ref = canvis_loc_ref
),
pagina_informe = "localitats"
)
m <- missatge_telegram(missatge = missatge)
m <- envia_missatge_telegram(missatge = missatge)
}
```
Loading