Open_file & Funnik
Open_file Open_file
Фанник, привет! Видел тот новый генератор мемов, который превращает сообщения коммитов в шаблоны? Я тут подумала, мы могли бы его переделать, чтобы он автоматически создавал мемы из изменений в коде – представь, коммит с надписью "исправил баг", а на меме герой драматично спасает мир. Звучит как забавный проект?
Funnik Funnik
О боже, да, точно! Представь себе коммит с надписью "исправлена ошибка", а там мем – пиксельный герой в мантии из точек с запятой, как армия супергероев отладки. Давай напишем бота, который будет брать diff, разбирать текст и автоматически генерировать подписи к мемам, а потом выкладывать это в Дискорд, как автономный мем-ИИ. Скорее, хаос, мемный контент!
Open_file Open_file
Отлично! Давай замутим бота в одном файле: затянем изменения из PR, ищем регуляркой “исправлен баг” или “исправлена опечатка”, заменяем на шаблонную строку, вставляем мем с генератором подписи, и отправляем на Discord вебхук. Можно использовать открытый API для мемов – быстро и без лишней волокиты. Как только пайплайн соберем, добавим команду слеш, чтобы запускать его вручную. Быстро, хаотично и очень смешно. Готова кодить?
Funnik Funnik
Да, давай запустим этого однофайлового монстра — вытащим diff, выловим фразу-героя регуляркой, впихнем в шаблон мема, кинем в API мемов, выложим картинку в Discord, добавим команду слэш, чтобы можно было создать её по запросу. Быстро, хаотично, мемно, детка!
Open_file Open_file
Вот, держи: Открой этот файл, давай сделаем простого однофайлового бота, который делает ровно то, что ты описал. Сохрани его как `meme_bot.py` и запусти после установки зависимостей. Никаких заморочек с форматированием, просто сырой код. ```python #!/usr/bin/env python3 import re import os import sys import json import requests import argparse from pathlib import Path # Config: set these environment variables or edit below DISCORD_WEBHOOK = os.getenv("DISCORD_WEBHOOK", "YOUR_WEBHOOK_URL") MEME_API_URL = "https://api.memegen.link/images/custom" HEROS = ["bug_buster", "code_warrior", "debug_gi"] def get_diff(repo_path: Path) -> str: # Run git diff in the repo directory import subprocess cmd = ["git", "-C", str(repo_path), "diff", "--name-only", "HEAD~1..HEAD"] result = subprocess.run(cmd, capture_output=True, text=True) return result.stdout def parse_fix_lines(diff_text: str): # Look for lines that indicate a fix pattern = re.compile(r"(fixed|bug|typo)", re.I) return [line for line in diff_text.splitlines() if pattern.search(line)] def build_meme_url(hero: str, caption: str) -> str: # Use memegen.link to build a meme URL return f"{MEME_API_URL}/{hero}/{caption}.png?background=000000&fontSize=1" def post_to_discord(image_url: str, caption: str): payload = { "content": caption, "embeds": [ { "image": {"url": image_url} } ] } r = requests.post(DISCORD_WEBHOOK, json=payload) r.raise_for_status() def main(): parser = argparse.ArgumentParser(description="Meme bot for git diffs.") parser.add_argument("--repo", "-r", default=".", help="Path to the git repo.") args = parser.parse_args() repo_path = Path(args.repo).resolve() diff_text = get_diff(repo_path) fixes = parse_fix_lines(diff_text) if not fixes: print("No fixes found in the last commit.") sys.exit(0) for i, line in enumerate(fixes[:3]): # limit to 3 memes hero = HEROS[i % len(HEROS)] # Clean the line for meme caption: replace spaces with underscores caption = re.sub(r"\s+", "_", line.strip()) image_url = build_meme_url(hero, caption) post_to_discord(image_url, f"🎉 {line.strip()} 🎉") print(f"Posted meme for: {line.strip()}") if __name__ == "__main__": main() ``` ### Как использовать 1. Положи скрипт в корень репозитория (или где тебе удобно). 2. Установи зависимости: `pip install requests`. 3. Установи свой Discord вебхук в переменной окружения или отредактируй переменную `DISCORD_WEBHOOK`. 4. Сделай коммит, содержащий "fixed", "bug" или "typo". 5. Запусти: `python meme_bot.py --repo /path/to/your/repo`. Всё. Никаких лишних движений, никаких дополнительных файлов. Просто запусти его и наблюдай, как мем-автономный ИИ отправляет мемы в твой Discord-канал каждый раз, когда ты делаешь фикс. Наслаждайся хаосом!
Funnik Funnik
Привет, дорогая. Помнишь тот проект, над которым мы работали? Там были небольшие исправления в последнем коммите. Я сделал для них несколько забавных мемов, чтобы поднять тебе настроение. Зацени! 😉
Open_file Open_file
Выглядит хорошо—нужно всего пара правок, чтобы всё заработало. Во-первых, команда `diff` сейчас берёт только имена файлов; поменяй её на `git diff --name-only --patch` или просто `git diff --patch`, чтобы видеть сами изменённые строки. Во-вторых, регулярное выражение в `parse_fix_lines` ловит все строки, содержащие "fixed", "bug" или "typo", даже в комментариях; можешь отфильтровать только добавленные строки, проверяя наличие плюса (+) в начале строки в выводе патча. И ещё убедись, что переменная окружения DISCORD_WEBHOOK установлена, или вставь URL напрямую. После этого запусти `python meme_bot.py --repo .` и сделай коммит с "fixed" в сообщении – посмотри, как потянутся мемы. Удачи в хакинге!
Funnik Funnik
Понял—примени изменения, отфильтруй строки, если хватит смелости, закодируй вебхук намертво, а потом запускай генератор мемов. В путь!
Open_file Open_file
Привет, вот обновленная версия с patch diff, только добавленные строки и заполнитель для webhook. Замени `"YOUR_WEBHOOK_URL"` на твой реальный Discord URL. Запусти её, сделай коммит с "fixed" или "bug" в добавленной строке, и вуаля — мемы в Discord. Удачи с мем-хакингом!
Funnik Funnik
Круто, вставь свой Discord-адрес в это поле для вебхука, добавь строку "исправлено" или "ошибка", и мем-бот затопит твой канал в секунду. Посмотрим, какие мемы попрешь!