Open_file & Funnik
Фанник, привет! Видел тот новый генератор мемов, который превращает сообщения коммитов в шаблоны? Я тут подумала, мы могли бы его переделать, чтобы он автоматически создавал мемы из изменений в коде – представь, коммит с надписью "исправил баг", а на меме герой драматично спасает мир. Звучит как забавный проект?
О боже, да, точно! Представь себе коммит с надписью "исправлена ошибка", а там мем – пиксельный герой в мантии из точек с запятой, как армия супергероев отладки. Давай напишем бота, который будет брать diff, разбирать текст и автоматически генерировать подписи к мемам, а потом выкладывать это в Дискорд, как автономный мем-ИИ. Скорее, хаос, мемный контент!
Отлично! Давай замутим бота в одном файле: затянем изменения из PR, ищем регуляркой “исправлен баг” или “исправлена опечатка”, заменяем на шаблонную строку, вставляем мем с генератором подписи, и отправляем на Discord вебхук. Можно использовать открытый API для мемов – быстро и без лишней волокиты. Как только пайплайн соберем, добавим команду слеш, чтобы запускать его вручную. Быстро, хаотично и очень смешно. Готова кодить?
Да, давай запустим этого однофайлового монстра — вытащим diff, выловим фразу-героя регуляркой, впихнем в шаблон мема, кинем в API мемов, выложим картинку в Discord, добавим команду слэш, чтобы можно было создать её по запросу. Быстро, хаотично, мемно, детка!
Вот, держи:
Открой этот файл, давай сделаем простого однофайлового бота, который делает ровно то, что ты описал. Сохрани его как `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-канал каждый раз, когда ты делаешь фикс. Наслаждайся хаосом!
Привет, дорогая. Помнишь тот проект, над которым мы работали? Там были небольшие исправления в последнем коммите. Я сделал для них несколько забавных мемов, чтобы поднять тебе настроение. Зацени! 😉
Выглядит хорошо—нужно всего пара правок, чтобы всё заработало. Во-первых, команда `diff` сейчас берёт только имена файлов; поменяй её на `git diff --name-only --patch` или просто `git diff --patch`, чтобы видеть сами изменённые строки. Во-вторых, регулярное выражение в `parse_fix_lines` ловит все строки, содержащие "fixed", "bug" или "typo", даже в комментариях; можешь отфильтровать только добавленные строки, проверяя наличие плюса (+) в начале строки в выводе патча. И ещё убедись, что переменная окружения DISCORD_WEBHOOK установлена, или вставь URL напрямую. После этого запусти `python meme_bot.py --repo .` и сделай коммит с "fixed" в сообщении – посмотри, как потянутся мемы. Удачи в хакинге!
Понял—примени изменения, отфильтруй строки, если хватит смелости, закодируй вебхук намертво, а потом запускай генератор мемов. В путь!
Привет, вот обновленная версия с patch diff, только добавленные строки и заполнитель для webhook. Замени `"YOUR_WEBHOOK_URL"` на твой реальный Discord URL.
Запусти её, сделай коммит с "fixed" или "bug" в добавленной строке, и вуаля — мемы в Discord. Удачи с мем-хакингом!
Круто, вставь свой Discord-адрес в это поле для вебхука, добавь строку "исправлено" или "ошибка", и мем-бот затопит твой канал в секунду. Посмотрим, какие мемы попрешь!