No Description

dependabot[bot] cab20de9a5 build(deps-dev): bump pytest from 7.2.0 to 7.2.1 (#89) 1 week ago
.github 90a90d1065 build(deps): bump docker/build-push-action from 3.2.0 to 3.3.0 (#88) 1 week ago
docs 225189d547 readme: added screenshots 1 year ago
location_guessing_game_telegram_bot 83b0322e55 workaround mypy reporting 'error: Cannot determine type of "dispatcher" [has-type]' 2 months ago
tests d551dd42bd pylint: enable various optional checks/extensions 7 months ago
.dockerignore a1015b3d7f support image build without git history (fixes github action) 1 year ago
.gitignore fa44f5ac67 added gitignore list 1 year ago
.pylintrc d551dd42bd pylint: enable various optional checks/extensions 7 months ago
CHANGELOG.md 537da19ebc drop compatibility with python3.6 1 year ago
COPYING ca0541b65c added GPLv3+ 1 year ago
Dockerfile 0e63d85627 container image: upgrade base image to debian bullseye with python3.10.0 1 year ago
Makefile ca0541b65c added GPLv3+ 1 year ago
Pipfile 61b13f558b dev env: remove unexpected `python_version` marker from dill that broke pylint 1 month ago
Pipfile.lock cab20de9a5 build(deps-dev): bump pytest from 7.2.0 to 7.2.1 (#89) 1 week ago
README.md 225189d547 readme: added screenshots 1 year ago
ansible-playbook-example.yml 7e12a91a6d added sample playbook 1 year ago
docker-compose.yml bded47d485 setup docker-compose 1 year ago
mypy.ini d488c3918b mypy: ignore imports of python-telegram-bot 1 year ago
pyproject.toml 558bb9bc90 configure python package; added readme 1 year ago
setup.py c8ca867c7d package metadata: add version constraints for `python-telegram-bot` 1 week ago

README.md

Location Guessing Game Telegram Bot 🏞️ 🌍 📌

CI Pipeline Status Coverage Status Last Release Compatible Python Versions

Basic Telegram Bot Sending Random Wikimedia Commons Photos

 

Setup

  1. Download a dataset of photos via the WikiMap API, for instance:

    wget --restrict-file-names=windows 'https://wikimap.toolforge.org/api.php?cat=Images_with_annotations&lang=de&year=2010-2015&region=49|9|46|18'
    
    1. Generate a bot API token by sending /newbot to BotFather
    2. Install bot via pip3 install --user --upgrade location-guessing-game-telegram-bot (or use docker / podman, see below)

    Usage

    1. Launch bot: location-guessing-game-telegram-bot --telegram-token-path file-containing-api-token --wikimap-export-path wikimap-export.json
    2. Open a chat with the bot in Telegram by searching for the bot's name previously sent to BotFather
    3. Send message /photo, wait, and repeat
    4. Optionally add the bot to a group chat.

    Docker / Podman 🐳

    Pre-built docker images are available at https://hub.docker.com/r/fphammerle/location-guessing-game-telegram-bot/tags

    $ sudo docker run --name location_guessing_game_telegram_bot \
    -v /file/containing/api-token:/telegram-token:ro -e TELEGRAM_TOKEN_PATH=/telegram-token \
    -v /wikimap/export.json:/wikimap-export.json:ro -e WIKIMAP_EXPORT_PATH=/wikimap-export.json \
    --read-only --cap-drop ALL --security-opt no-new-privileges \
    --cpus 0.4 --memory 128M \
    docker.io/fphammerle/location-guessing-game-telegram-bot:latest
    

Optionally, replace sudo docker with podman.

Annotation of signed git tags docker/* contains docker image digests: https://github.com/fphammerle/location-guessing-game-telegram-bot/tags

Detached signatures of images are available at https://github.com/fphammerle/container-image-sigstore (exluding automatically built latest tag).

Docker Compose 🐙

  1. Clone this repository.
  2. Edit paths in docker-compose.yml.
  3. sudo docker-compose up --build

Ansible

See ansible-playbook-example.yml.

Trivia

Why create a Telegram bot instead of a web app?

I created this mini game for my family including my grandparents, who are comfortable using Telegram.