{"id":14483428,"url":"https://github.com/evenfurther/AusweisBot","last_synced_at":"2025-08-30T04:30:42.855Z","repository":{"id":40339048,"uuid":"255596713","full_name":"evenfurther/AusweisBot","owner":"evenfurther","description":"Telegram bot to generate self-authorizations for moving around during covid-19 pandemic in France","archived":false,"fork":false,"pushed_at":"2024-09-16T05:00:50.000Z","size":4328,"stargazers_count":16,"open_issues_count":2,"forks_count":6,"subscribers_count":4,"default_branch":"main","last_synced_at":"2024-09-16T06:27:29.342Z","etag":null,"topics":["akka","hacktoberfest","pdf-generation","qrcode","scala","telegram","telegram-bot"],"latest_commit_sha":null,"homepage":"","language":"Scala","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/evenfurther.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-04-14T11:58:45.000Z","updated_at":"2024-09-16T05:00:37.000Z","dependencies_parsed_at":"2023-10-16T08:58:39.237Z","dependency_job_id":"79751232-0fc1-4ae2-bdc1-600fab032f47","html_url":"https://github.com/evenfurther/AusweisBot","commit_stats":null,"previous_names":["evenfurther/ausweisbot"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/evenfurther%2FAusweisBot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/evenfurther%2FAusweisBot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/evenfurther%2FAusweisBot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/evenfurther%2FAusweisBot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/evenfurther","download_url":"https://codeload.github.com/evenfurther/AusweisBot/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":231438919,"owners_count":18376823,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["akka","hacktoberfest","pdf-generation","qrcode","scala","telegram","telegram-bot"],"created_at":"2024-09-03T00:01:45.931Z","updated_at":"2024-12-27T04:31:17.596Z","avatar_url":"https://github.com/evenfurther.png","language":"Scala","funding_links":[],"categories":["Scala"],"sub_categories":[],"readme":"# Présentation générale\n\nAusweisBot est un logiciel libre permettant de générer\npendant la pandémie de covid-19 une attestation dérogatoire de\ndéplacement en France à travers le réseau de communication\n[Telegram](https://telegram.org). \u003c!-- Une instance publique,\nutilisable par tous, est disponible sur Telegram sous le nom\n[@AusweisBot](https://telegram.me/AusweisBot). --\u003e\n\n\u003c!-- [__Accéder à l'instance publique @AusweisBot en cliquant ici__](https://telegram.me/AusweisBot) --\u003e\n\nAusweisBot est écrit en [Scala](https://www.scala-lang.org/) et utilise notamment l'intergiciel\n[Akka](https://akka.io), la bibliothèque [bots4s.telegram](https://github.com/bot4s/telegram),\nla bibliothèque [Apache PDFBox](https://pdfbox.apache.org/) et la bibliothèque [ZXing](https://github.com/zxing/zxing).\nVous pouvez utiliser le gestionnaire de tickets et de _pull requests_ de GitHub pour faire\ndes remarques sur des fonctionnalités ou proposer des changements.\n\n# FAQ\n\n__Est-ce que AusweisBot stocke des données à caractère personnel ?__\n\nAusweisBot conserve les seules données strictement nécessaires à la génération\ndes attestations dérogatoires de sortie. Les données stockées peuvent être\nconsultées à tout moment en utilisant la commande `/data` et effacées avec la\ncommande `/start`.\n\nCette politique de gestion des données est détaillée dans le résultat de la\ncommande `/privacy` qui peut être utilisée à tout moment, notamment avant la collecte\ndes données personnelles.\n\n__Pourquoi ce nom ?__\n\n\u003e « Nous sommes en guerre » (Emmanuel Macron, 16 mars 2020)\n\n« _Ausweis_ » est un mot allemand signifiant « pièce d'identité ». Il était utilisé lors de la\ndernière guerre mondiale pour désigner les laissez-passer dérogatoires dont la présentation\nétait obligatoire pour pouvoir circuler. Et puis cela permet de court-circuiter\nla [loi de Godwin](https://fr.wikipedia.org/wiki/Loi_de_Godwin) avant même de commencer la\ndiscussion.\n\n__Quelles garanties apportez-vous ?__\n\nPour être clair : _aucune_. Ce logiciel ainsi que le service en ligne\nassocié ont pour but de faciliter, sous votre propre responsabilité, la création\nd'une attestation dérogatoire de déplacement conforme à ce qu'exige la\nréglementation. C'est à vous de vous assurer que les informations qui\nfigurent sur le document sont exactes. Le plus grand soin a également\nété apporté au contenu du QR-code contenu dans l'attestation afin de\npermettre une lecture sans contact du document par les forces de l'ordre\nafin de préserver la santé de chacun, mais là aussi, l'utilisation du\nQR-code lors d'un contrôle se fait sous la seule responsabilité de\nl'utilisateur.\n\n__AusweisBot est-il utilisable dans les territoires d'outre-mer ?__\n\nAusweisBot est avant tout destiné à la France métropolitaine : Telegram ne fournit aucune\ninformation sur la localisation de l'utilisateur ou le fuseau horaire dans lequel il se\ntrouve. On suppose donc que l'utilisateur se trouve, par défaut, en France métropolitaine.\n\nCela n'empêche pas d'utiliser AusweisBot depuis les territoires d'outre-mer en spécifiant\nun horaire explicite. Toutefois, une attention particulière devra être apportée à l'examen\ndu document produit pour s'assurer que tout est en ordre.\n\n__Cela permet-il de sortir dans plus de cas ou plus souvent ?__\n\nNon, AusweisBot permet simplement de générer les attestations dérogatoires de déplacement\ntel que vous le feriez avec l'attestation papier ou le générateur d'attestation mis à disposition\npar le ministère de l'intérieur. __Restez chez vous !__\n\n__Puis-je déployer mon propre bot à partir du code source de AusweisBot sur Telegram ?__\n\nBien entendu, du moment que vous respectez les termes des licenses des logiciels\net données utilisés (cf. ci-dessous). De plus, vous devez vous assurer que les informations\npermettant de vous contacter sont à jour.\n\n__Que pensez-vous du principe de cette attestation dérogatoire de déplacement ?__\n\nPeu importe ce que j'en pense, la présentation d'un document attestant d'une raison valable\nde sortie est rendue obligatoire par l'article 4 du\n[décret n° 2020-1310 du 29 octobre 2020](https://www.legifrance.gouv.fr/jorf/id/JORFTEXT000042475143).\nPour limiter les contacts lors du contrôle, il me semble plus simple de présenter une attestation\nidentique à ce que propose le service en ligne du ministère de l'intérieur en y incluant\nun QR-code incorporant le même contenu.\n\n__Pourquoi Scala et pas rust, elixir, etc. ?__\n\nLa bibliothèque [Apache PDFBox](https://pdfbox.apache.org) écrite pour Java (et donc disponible directement\nen Scala) permet une manipulation facile du fichier PDF contenant l'attestation. De plus, [Akka](https://akka.io) facilite la supervision\net la reprise sur faute, notamment en cas de défaillance temporaire des serveurs Telegram ou en cas\nde perte de connectivité de l'ordinateur sur lequel le service est hébergé.\n\n__Pourquoi Scala 2.12 et pas Scala 2.13 ?__\n\nLa bibliothèque [bots4s.telegram](https://github.com/bot4s/telegram) n'est pas à ce jour disponible\npour Scala 2.13 car elle utilise une dépendance (`slogging`) qui n'est plus maintenue et n'a\njamais été adaptée pour Scala 2.13.\n\n# Licence\n\nAusweisBot est distribué sous les termes de la licence [GNU Affero\nPublic License version 3.0](https://www.gnu.org/licenses/agpl-3.0.html).\n\nPour faciliter la saisie du lieu de confinement, ce logiciel utilise une\nliste des communes de France et de leurs codes postaux qui s'accompagne\nde la licence suivante :\n\n\u003e Ce(tte) œuvre de https://sql.sh est mise à disposition\n\u003e selon les termes de la [licence Creative Commons\n\u003e Attribution – Partage dans les Mêmes Conditions 4.0\n\u003e International](http://creativecommons.org/licenses/by-sa/4.0/).\n\u003e\n\u003e Vous êtes libre de partager, distribuer ou utiliser cette base de données,\n\u003e pour des utilisations commerciales ou non, à condition de conserver cette licence\n\u003e et d’attribuer un lien vers le site sql.sh.\n\n## Comment lancer mon propre bot ?\n\nVous aurez besoin d'un ordinateur avec une connectivité permanente à Telegram pour faire tourner\nvotre version du bot. Il vous faudra également créer un jeton d'authentification du bot\nauprès du [gestionnaire de robots BotFather](https://telegram.me/BotFather).\n\n### À la main\n\nVous aurez besoin de [`sbt`](https://www.scala-sbt.org) pour compiler et lancer ce programme.\n\nLe fichier de configuration se trouve dans `src/main/resources/application.conf`. Il vous\nfaudra _a minima_ remplir l'entrée `ausweis.telegram-token` avec le jeton d'authentification\nfourni par BotFather et `ausweis.contact-email` avec votre adresse mail de contact pour la gestion\ndes données personnelles. Vous pouvez préférer placer ces informations dans un fichier à la\nracine de votre dépôt et le passer en premier argument du programme.\n\nPar défaut, le programme se connecte à une base de données [CouchDB](https://couchdb.apache.org)\ntournant localement sur le port par défaut en mode non protégé. Il faut donc n'autoriser que\ndes connexions locales, ou utiliser des conteneurs (cf. ci-dessous).\n\nVous pouvez lancer le bot avec la commande `run` (ou `run configuration-file`) de `sbt`.\n\n### Dans des conteneurs\n\nUn fichier de configuration pour\n[docker-compose](https://docs.docker.com/compose/) est fourni à la racine\ndu dépôt, auquel cas seuls `docker` et `docker-compose` sont strictement nécessaires.\n\nPour lancer votre instance du bot, il vous faut d'abord créer un fichier\nde configuration `.env` à la racine du dépôt contenant _a minima_\n`TELEGRAM_TOKEN=le-token-donné-par-BotFather` et\n`CONTACT_EMAIL=votre-adresse-mail-de-contact`. Vous pouvez ensuite générer\nles conteneurs avec `docker-compose build` puis les lancer avec\n`docker-compose up`.\n\nVous pouvez aussi récupérer automatiquement la dernière version officielle des conteneurs\nà partir de [DockerHub](https://hub.docker.com/r/rfc1149/ausweisbot), et lancer le tout\nen tâche de fond grâce aux commandes\n\n```bash\n$ docker-compose pull\n$ docker-compose up -d\n```\n\nDans ce cas, vous n'avez besoin de rien d'autre que le fichier `.env` que vous avez créé\net le fichier `docker-compose.yml` se trouvant à la racine du dépôt.\n\n### Gérer la liste des commandes pour BotFather\n\nLa liste des commandes à donner à BotFather pour générer la complétion automatique peut\nêtre générée en faisant à l'aide :\n\n- soit de `sbt genCommands` lorsqu'on compile depuis les sources, qui générera un fichier\n  `commands.txt` dans le répertoire courant ;\n- soit de la commande `docker run --rm rfc1149/ausweisbot cat commands.txt` pour les utilisateurs de Docker\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fevenfurther%2FAusweisBot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fevenfurther%2FAusweisBot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fevenfurther%2FAusweisBot/lists"}