+
Skip to content

Norkid/vaalilakanabot

Repository files navigation

Vaalilakanabot

Telegram-botti, joka vaalien aikaan ylläpitää listausta ehdolle asettuneista henkilöistä ja ilmoittaa uusista postauksista killan Discourse-pohjaisella keskustelufoorumilla Φrumilla.

Ominaisuudet

  • Kiltalaiset voivat hakea sekä vaaleilla valittaviin että ei-vaaleilla valittaviin virkoihin.
  • Admin-hyväksyntä: Hakemukset vaaleilla valittaviin virkoihin (hallitus ja valittavat toimihenkilöt) vaativat admin-hyväksynnän ennen lisäämistä vaalilakanaan.
  • Ilmoittaa chatteissa, joihin botti on lisätty, aina kun fiirumille on tullut uusi postaus.
  • Botin admin-käyttäjä voi ylläpitää sähköistä vaalilakanaa.
  • Jauhistelu

CI/CD Pipeline

This project uses GitHub Actions for continuous integration and deployment:

  • Automatic builds: Docker images are automatically built and pushed to GitHub Container Registry on every push to main/master branch
  • Image tags: Images are tagged with branch name, commit SHA, and semantic version tags
  • Registry: Images are available at ghcr.io/fyysikkokilta/vaalilakanabot

Development vs Production

  • Development: Use docker-compose up (uses local build via override file)
  • Production: Use docker-compose -f docker-compose.prod.yml up (uses pre-built image)

Käyttöönotto

  • asenna python-telegram-bot-kirjasto (versio >=21) ja muut tarvittavat kirjastot.
  • lisää Telegram-bot Bot Father -botilla ja ota botin token talteen.
  • Luo Discourse api-avain bottia varten.
  • Luo admin Telegram-ryhmä ja ota sen id talteen esimerkiksi botilla @RawDataBot.
  • Luo vaalilakana Fiirumille.
    • Viestissä, jossa vaalilakana sijaitsee ei saa olla muuta tekstiä kuin itse vaalilakana.
    • Jaoksien nimet tulee olla ISOLLA kirjoitettuna ja rivi saa sisältää vain suomenkielisen ja englanninkielisen käännöksen /-merkillä jaettuna.
    • Roolirivit tulee olla muodossa {suomenkielinen nimi} / {englanninkielinen nimi} ({valittavien määrä}) {haun deadline (muodossa xx.yy.}
      • Kaikki muut paitsi suomenkielinen nimi ovat vapaaehtoisia, mutta järjestyksen tulee olla juuri tämä.
  • Luo bot.env esimerkkitiedoston bot.env.example mukaisesti.
  • $ python vaalilakanabot.py
  • lisää botti relevantteihin keskusteluryhmiin.

Running the bot with Docker

  • Create a Telegram bot and save the bot token.
  • Create Discourse api keys to be used by the bot.
  • Create an admin Telegram group and get the id of the group using, for example, @RawDataBot.
  • Create the vaalilakana for Fiirumi.
    • The message containing the vaalilakana must not have any text other than the vaalilakana itself.
    • Division names must be written in ALL CAPS, and each line should contain only the Finnish and English translations separated by a /.
    • Role lines must follow the format:
      {Finnish name} / {English name} ({number of positions}) {application deadline (in the format xx.yy.)}
      • Everything except the Finnish name is optional, but the order must be exactly as specified.
  • Create bot.env according to the example file bot.env.example.
  • Make sure the empty vaalilakana is already created when starting the bot so that the local json is populated.

Docker Deployment Options

Development (local build):

docker-compose up

Production (pre-built image):

docker-compose -f docker-compose.prod.yml up

Using the deployment script:

./update-deployment.sh

Komennot

Botti tukee seuraavia komentoja:

  • /start Rekisteröi ryhmän botin tiedotuskanavaksi ja ryhmää saa botilta ilmoituksia.
  • /lakana Näyttää vaalien ehdokastilanteen.
  • /jauhis Näyttää vaaliaiheisen kuvan.
  • /jauh Näyttää vaaliaiheisen kuvan.
  • /jauho Näyttää vaaliaiheisen kuvan.
  • /lauh Näyttää vaaliaiheisen kuvan.
  • /mauh Näyttää vaaliaiheisen kuvan.
  • /hae Aloittaa hakemuslomakkeen täyttämisen.

Admin-chatissa seuraavat komennot ovat käytössä:

  • /poista Poistaa ehdokkaan lakanasta. (toimii myös ei-vaaleilla valittavaan virkoihin; hakijan voi siis poistaa botin kautta)
  • /lisaa_fiirumi Lisää ehdokkaan fiirumipostauksen vaalilakanaan.
  • /poista_fiirumi Poistaa vaalilakanaan lisätyn fiirumipostauksen.
  • /valittu Merkitsee vaalilakanassa ehdokkaan valituksi virkaan. (toimii myös ei-vaaleilla valittavaan virkoihin)
  • /muokkaa_roolia Lisää uuden roolin tai muokkaa olevassa olevaa roolia vaalilakanassa.
  • /poista_rooli Poistaa roolin vaalilakanasta.
  • /vie_tiedot Luo hakijoiden tiedoista CSV-tiedoston.
  • /odottavat Näyttää kaikki odottavat hakemukset, jotka vaativat admin-hyväksynnän.

Admin-hyväksyntä

Hakemukset vaaleilla valittaviin virkoihin (määritellään BOARD ja ELECTED_OFFICIALS ympäristömuuttujissa) vaativat admin-hyväksynnän:

  1. Kun käyttäjä lähettää hakemuksen vaaleilla valittavaan virkaan, botti lähettää hyväksyntäpyynnön admin-chatin.
  2. Admin-chatissa näkyy hakemuksen tiedot ja kaksi painiketta: "✅ Hyväksy" ja "❌ Hylkää".
  3. Kun admin hyväksyy hakemuksen:
    • Hakemus lisätään vaalilakanaan
    • Hakijalle lähetetään hyväksyntäilmoitus
    • Kanaville lähetetään tavallinen ilmoitus uudesta nimestä vaalilakanassa
  4. Kun admin hylkää hakemuksen:
    • Hakemus poistetaan odottavien listalta
    • Hakijalle lähetetään hylkäysilmoitus
  5. Käyttäjä ei voi lähettää uutta hakemusta samaan virkaan niin kauan kun edellinen hakemus odottaa käsittelyä.

Lisätietoa

Lisää telegram-boteista voi lukea esimerkiksi Kvantti I/19 s.22-25.

Botin tekivät Einari Tuukkanen ja Uula Ollila.

About

Botti vaalipöhinän nostattamiseen

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 6

Languages

点击 这是indexloc提供的php浏览器服务,不要输入任何密码和下载