Files
2026-01-09 20:41:47 +03:00

4.2 KiB
Raw Permalink Blame History

furry_giffer_bot_mastodon

EN: A Mastodon mention-bot that replies with animated media from Furbooru (Philomena API).
It tries to upload a GIF first (with size fallbacks) and, if your Mastodon instance rejects GIFs (e.g. resolution limits), it automatically converts GIF → MP4 and uploads that instead.
For NSFW requests it posts with CW + spoiler and marks media as sensitive.
Works on Windows and Linux.

RU: Бот для Mastodon, который отвечает на упоминания и прикрепляет анимированное медиа из Furbooru (Philomena API).
Сначала пробует залить GIF (с фолбэком на меньшие версии), а если инстанс отклоняет GIF (например из-за лимитов на разрешение) — автоматически конвертирует GIF → MP4 и заливает MP4.
Для NSFW-запросов постит с CW + спойлером и отмечает медиа как sensitive.
Работает на Windows и Linux.


Features / Возможности

  • Reply to mentions: @giffer cute fluffy tail
  • Multi-tag queries: spaces/commas, quotes, negative tags
    • cute fluffy tailcute, fluffy, tail
    • "rainbow dash" -gore
  • nsfw keyword enables NSFW mode:
    • posts with spoiler_text="NSFW" and sensitive=True
    • uses NSFW filter_id if configured
  • Furbooru search for animated GIF via Philomena API
  • Real upload to Mastodon
  • Waits for media processing (prevents 422 “processing not finished”)
  • GIF upload fallbacks: full → large → medium → small → thumb
  • If GIF rejected by instance: auto-convert to MP4
  • Auto ALT text from Furbooru tags
  • Rate-limit protection:
    • per-user cooldown
    • global token bucket
  • Persistent state (prevents replying twice after restart):
    • saves last seen notification id + processed status ids
  • Logs to console + rotating file

Requirements / Требования

  • Python 3.10+ recommended
  • Mastodon access token with permission to read notifications & post statuses/media
  • Optional: ffmpeg (or imageio-ffmpeg for bundled ffmpeg)

Install / Установка

Windows (PowerShell or CMD)

py -m pip install --upgrade pip
py -m pip install Mastodon.py requests imageio-ffmpeg

Linux/macOS

python3 -m pip install --upgrade pip
python3 -m pip install Mastodon.py requests imageio-ffmpeg

If you already have system ffmpeg, you can skip imageio-ffmpeg, but its recommended for Windows.


Configuration / Настройка

Create config.env next to the script:

MASTODON_BASE_URL=https://bronyfurry.com
MASTODON_ACCESS_TOKEN=YOUR_TOKEN_HERE

FURBOORU_BASE_URL=https://furbooru.org
# FURBOORU_API_KEY=OPTIONAL
# SAFE_FILTER_ID=OPTIONAL
# NSFW_FILTER_ID=OPTIONAL

# Optional runtime tuning:
CHECK_INTERVAL=30
USER_COOLDOWN_SEC=20
GLOBAL_RATE_PER_SEC=1.0
GLOBAL_BURST=3

LOG_LEVEL=INFO
LOG_FILE=giffer.log

STATE_FILE=giffer_state.json
PROCESSED_CACHE_MAX=800

# Network tuning (Windows-safe defaults):
CONNECT_TIMEOUT=5
READ_TIMEOUT=20
DOWNLOAD_TIMEOUT=40
SOCKET_DEFAULT_TIMEOUT=25
MASTO_CALL_TIMEOUT=25
MEDIA_PROCESS_MAX_WAIT=60

# NSFW posts visibility:
NSFW_VISIBILITY=public

Run / Запуск

python giffer_bot.py

The bot will continuously poll mentions and respond.


Usage / Использование

Mention the bot with tags:

  • @giffer cute
  • @giffer cute fluffy tail
  • @giffer "rainbow dash" -gore
  • @giffer nsfw latex

NSFW mode is triggered if the word nsfw is present anywhere in the mention content.

The reply will include an original source link (Furbooru page).


Files / Файлы

  • giffer_bot.py — bot source code
  • config.env — configuration (not committed)
  • giffer.log — log file (rotating)
  • giffer_state.json — saved state to avoid double replies

Notes / Примечания

  • If the bot starts replying to old mentions again, make sure STATE_FILE is not deleted.
  • Some Mastodon instances reject large GIFs. This is expected; the bot will try smaller representations and then MP4 fallback.

License / Лицензия

MIT License