Telegram-botti, joka vaalien aikaan ylläpitää listausta ehdolle asettuneista henkilöistä ja ilmoittaa uusista postauksista killan Discourse-pohjaisella keskustelufoorumilla Φrumilla.
- 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
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: Use
docker-compose up
(uses local build via override file) - Production: Use
docker-compose -f docker-compose.prod.yml up
(uses pre-built image)
- 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
esimerkkitiedostonbot.env.example
mukaisesti. $ python vaalilakanabot.py
- lisää botti relevantteihin keskusteluryhmiin.
- 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 filebot.env.example
. - Make sure the empty vaalilakana is already created when starting the bot so that the local json is populated.
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
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.
Hakemukset vaaleilla valittaviin virkoihin (määritellään BOARD
ja ELECTED_OFFICIALS
ympäristömuuttujissa) vaativat admin-hyväksynnän:
- Kun käyttäjä lähettää hakemuksen vaaleilla valittavaan virkaan, botti lähettää hyväksyntäpyynnön admin-chatin.
- Admin-chatissa näkyy hakemuksen tiedot ja kaksi painiketta: "✅ Hyväksy" ja "❌ Hylkää".
- 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
- Kun admin hylkää hakemuksen:
- Hakemus poistetaan odottavien listalta
- Hakijalle lähetetään hylkäysilmoitus
- Käyttäjä ei voi lähettää uutta hakemusta samaan virkaan niin kauan kun edellinen hakemus odottaa käsittelyä.
Lisää telegram-boteista voi lukea esimerkiksi Kvantti I/19 s.22-25.
Botin tekivät Einari Tuukkanen ja Uula Ollila.