Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rappresentanti #150

Merged
merged 9 commits into from
Dec 6, 2023
Merged

Rappresentanti #150

merged 9 commits into from
Dec 6, 2023

Conversation

samuelemusiani
Copy link
Member

No description provided.

@samuelemusiani samuelemusiani marked this pull request as draft December 5, 2023 00:09
@samuelemusiani samuelemusiani linked an issue Dec 5, 2023 that may be closed by this pull request
@samuelemusiani
Copy link
Member Author

Per ora la pr si basa sul file representatives.json presente nel sottomodulo config. In reltà ho modificato questo file e lascio qui sotto la versione più nuova in quanto non è ancora pronto per essere committato su config:

{
  "l_informatica": {
    "course": "Informatica",
    "representatives": [749955681, 609728909, 733488502, 344994427, 950367394]
  },
  "l_informaticamanagement": {
    "course": "Informatica per il Management",
    "representatives": []
  },
  "l_ingegneriainformatica": {
    "course": "Ingegneria Informatica",
    "representatives": []
  },
  "l_ingegneriascienceinformatiche": {
    "course": "Ingegneria e Scienze Informatiche",
    "representatives": []
  },
  "lm_informatica_software_techniques": {
    "course": "Informatica magistrale - Tecniche del software",
    "representatives": [265198910, 1387406495, 45559132]
  },
  "lm_informatica_management": {
    "course": "Informatica magistrale - Informatica per il management",
    "representatives": []
  },
  "lm_informatica_systems_and_networks": {
    "course": "Informatica magistrale - Sistemi e reti",
    "representatives": []
  },
  "lm_ingegneriascienzeinformatiche": {
    "course": "Ingegneria e Scienze Informatiche Magistrale",
    "representatives": []
  },
  "lm_intelligent_systems": {
    "course": "Intelligent Embedded Systems",
    "representatives": []
  },
  "lm_ingegneriainformatica": {
    "course": "Ingegneria Informatica Magistrale",
    "representatives": []
  },
  "lm_ai": {
    "course": "Artificial Intelligence",
    "representatives": []
  }
}

In realtà si è presentato un problema che va discusso: telegram non supporta il lookup degli username a partire soltanto dagli id delle person se queste non sono nel gruppo in cui è stato lanciato il comando che fa l'operazione. Ne consegue che per un comando come /rappresentanti, in cui ci dovrebbero essere sempre tutti indipendentemente dal fatto di essere membri o meno gruppo in cui è stato lanciato il comando, è necessario inventarsi qualcosa di diverso. Il metodo secondo me più semplice è fare hardcoding degli username. Appena però uno di questi cambia il bot si rompe. Avete altre idee @csunibo/sviluppatori-bot?

@Jabbar03
Copy link
Contributor

Jabbar03 commented Dec 5, 2023

Invece di scrivere il contatto telegram, potremmo mettere i nomi cognomi dei rappresentanti e poi chi vuole scrive una mail in privato al rappresentante. So che non è quello che vorremmo fare dato che siamo su telegram e vorremmo usare quella piattaforma ma almeno evitiamo di hardcodare qualcosa che potrebbe cambiare. (Non credo ci sia gente che cambia il nome/cognome)

@samuelemusiani
Copy link
Member Author

A questo punto mettiamo direttamente le mail perché non è sempre univoca la funzione nome -> mail se ci sono degli omonimi

@samuelemusiani samuelemusiani marked this pull request as ready for review December 5, 2023 10:01
Copy link
Contributor

@Jabbar03 Jabbar03 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ci può stare dai

bot/bot.go Show resolved Hide resolved
Copy link
Member

@foxyseta foxyseta left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tutte le condizioni err != nil le sostituirei con err che è invece idiomatico. Idem len(x) == 0 dove userei len(x).

@samuelemusiani
Copy link
Member Author

Tutte le condizioni err != nil le sostituirei con err che è invece idiomatico. Idem len(x) == 0 dove userei len(x).

Intendi negli if? Sei sicuro funzioni?

@Jabbar03
Copy link
Contributor

Jabbar03 commented Dec 5, 2023

Tutte le condizioni err != nil le sostituirei con err che è invece idiomatico. Idem len(x) == 0 dove userei len(x).

0 = true in go?

@foxyseta
Copy link
Member

foxyseta commented Dec 5, 2023

Tutte le condizioni err != nil le sostituirei con err che è invece idiomatico. Idem len(x) == 0 dove userei len(x).

0 = true in go?

No con il ! davanti scusa. Siccome 0 è lo zero-value degli interi (e quindi viene convertito in falso come nella maggior parte dei linguaggi di programmazione)

@samuelemusiani
Copy link
Member Author

samuelemusiani commented Dec 5, 2023

Tutte le condizioni err != nil le sostituirei con err che è invece idiomatico. Idem len(x) == 0 dove userei len(x).

0 = true in go?

No con il ! davanti scusa. Siccome 0 è lo zero-value degli interi (e quindi viene convertito in falso come nella maggior parte dei linguaggi di programmazione)

Forse non capisco io, ma una cosa come il codice seguente non funziona:

if !err {
	...
}

if !len(mails) {
	...
}

@foxyseta
Copy link
Member

foxyseta commented Dec 6, 2023

Sì lol scusa la coercizione con il not in stil C proprio non la fa fare, però per err intendevo senza il ! siccome in tutti quei controlli che ho visto io stiamo verificando che l'errore ci sia, non che non ci sia.

Quindi ricapitolanco userei if err { e lascerei len così com'è (scusate).

@Jabbar03
Copy link
Contributor

Jabbar03 commented Dec 6, 2023

Tutte le condizioni err != nil le sostituirei con err che è invece idiomatico. Idem len(x) == 0 dove userei len(x).

0 = true in go?

No con il ! davanti scusa. Siccome 0 è lo zero-value degli interi (e quindi viene convertito in falso come nella maggior parte dei linguaggi di programmazione)

Forse non capisco io, ma una cosa come il codice seguente non funziona:

if !err {

	...

}



if !len(mails) {

	...

}

Forse puoi fare un Override di len che ritorni un booleano. Ma per la condizione !err non saprei come possa funzionare

@foxyseta
Copy link
Member

foxyseta commented Dec 6, 2023

No gli overload (immagino intendessi quello anziché override?) in Go volutamente non ci sono. Quanod hai "err == null" o "len(x)" + qualcosa lascialo puri così, ma quando hai "err != null" (e sono tanti posti) lì cambierei e lascerei solo "err".

@samuelemusiani samuelemusiani dismissed foxyseta’s stale review December 6, 2023 10:49

Non è possibile farlo

@samuelemusiani samuelemusiani merged commit 8c6219a into main Dec 6, 2023
3 checks passed
@ali-benny
Copy link
Member

@Jabbar03 hanno mergiato, avevi approvato??

@ali-benny ali-benny deleted the rappresentanti branch December 6, 2023 10:55
@Jabbar03
Copy link
Contributor

Jabbar03 commented Dec 6, 2023

Sì sì

@Jabbar03
Copy link
Contributor

Jabbar03 commented Dec 6, 2023

Avevo fatto anche review

@samuelemusiani
Copy link
Member Author

Avevo fatto anche review

Ma per favore, vai a fare override di len

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: Done
Development

Successfully merging this pull request may close these issues.

/rappresentanti
4 participants