Compare commits

...

No commits in common. "9cc4247b4e0df9a3b1fecc26b8ef09a2323dfdaa" and "5598f2b5cb9d28d39f543cc08f7f498374efdfe9" have entirely different histories.

17 changed files with 112 additions and 859 deletions

5
.gitignore vendored
View File

@ -1,5 +1,2 @@
node_modules/
.env
.env.*
dist/
.mys
*.jpg

View File

@ -1,6 +1,33 @@
Этот репозиторий создан для унижения Сергея Пидоровича и анального удовлетворения.
Сергей сосал член
This repository was created to humiliate Sergey Pidorovich and anal satisfaction.
Sergay suck dick
Надо по приколу и сбору всяких моих проектов
Если захотите использовать данныую сборку различных проектов, то сначала выполните:
```
cd /needed/your/directore
```
```
git clone https://github.com/hhu67/my.git
```
Все необходимое для использования этих проектов модули храняться в main.sh:
```
bash main.sh
```
Перейдите в папку репозитория
```
cd my
```
Выполните
```
cd code
```
Если вы хотите установить модули только для конкретного проекта, то сначала выполните:
```
l
```
Перейдите в папку выдавшуюся вам по предыдущей команде каторая начинается с /
```
cd папка
```
Выполните:
```
bash main.sh
```

4
code/.gitignore vendored
View File

@ -1,4 +0,0 @@
node_modules/
.env
.env.*
dist/

View File

@ -1,13 +0,0 @@
# sergay
Здесь будет основной код для унижения,
необходимые pip модули:
```
python-telegram-bot
python-dotenv
```
Here will be the basic code for humiliating,
the necessary pip modules:
```
python-telegram-bot
python-dotenv
```

View File

@ -1,43 +0,0 @@
import json
from pathlib import Path
JSON_FILE = "sergay.json"
def add_phrase(text: str):
path = Path(JSON_FILE)
if not path.exists():
print("Файл sergay.json не найден")
return
with path.open("r", encoding="utf-8") as f:
data = json.load(f)
if not isinstance(data, list):
print("JSON должен быть списком")
return
last_id = max(item["id"] for item in data)
new_id = last_id + 1
new_item = {
"id": new_id,
str(new_id): text
}
data.append(new_item)
with path.open("w", encoding="utf-8") as f:
json.dump(data, f, ensure_ascii=False, indent=4)
print(f"Добавлено: {new_item}")
if __name__ == "__main__":
phrase = input("Введите новую фразу: ").strip()
if phrase:
add_phrase(phrase)
else:
print("Фраза пустая")

19
code/list/app.py Normal file
View File

@ -0,0 +1,19 @@
import sys
lis=[]
while True:
print('Введите 1, чтобы добавить продукт\n\nВведите стоп если хотите закончить')
pol=input('Ведите: ')
if pol=='1':
add_list=input('Введите предмет ')
if f'{add_list}' in lis:
print(f'{add_list} уже есть в списке')
else:
add=lis.append(add_list)
elif pol=='стоп':
print(f'Ваш список покупок {lis}')
sys.exit()
else:
print('Введите верный')

26
code/proxy/app.py Normal file
View File

@ -0,0 +1,26 @@
import requests
import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
urlpr='http://vps-sni-site.site:507/api/random'
url='https://httpbin.org/ip'
r = requests.get(urlpr, verify=False)
data = r.json()
text = data["proxy"]
proxies = {
'http': text,
'https': text
}
j = requests.get(url, proxies=proxies, verify=False)
data2 = j.json()
text2 = data2["origin"]
f = requests.get(url, verify=False)
data3 = f.json()
text3 = data3['origin']
print(f'Прокси: {text2}\nБез прокси: {text3}')

4
code/proxy/main.sh Normal file
View File

@ -0,0 +1,4 @@
sudo apt update && sudo apt install python3-pip
pip install requests --break-system-packages && echo 'yes'
pip install urllib3 --break-system-packages && echo 'yes'
pip install 'requests[socks]' --break-system-packages && echo 'yes'

View File

@ -1,402 +0,0 @@
[
{
"id": 1,
"1": "сын шлюхи"
},
{
"id": 2,
"2": "Пидорович"
},
{
"id": 3,
"3": "обосанный мудак"
},
{
"id": 4,
"4": "дрочит в коморке"
},
{
"id": 5,
"5": "свин мертвой шлюхи"
},
{
"id": 6,
"6": "любит когда ему садятся на лицо"
},
{
"id": 7,
"7": "гнида хаченская"
},
{
"id": 8,
"8": "зоофил"
},
{
"id": 9,
"9": "педофил"
},
{
"id": 10,
"10": "ебал прах своей матери"
},
{
"id": 11,
"11": "хуесос с грязной жопой"
},
{
"id": 12,
"12": "иноагент"
},
{
"id": 13,
"13": "снаряд в пушке"
},
{
"id": 14,
"14": "уже мертв"
},
{
"id": 15,
"15": "любит когда ему наступают на яйца"
},
{
"id": 16,
"16": "без члена"
},
{
"id": 17,
"17": "людоед"
},
{
"id": 18,
"18": "сосал член"
},
{
"id": 19,
"19": "имеет желтый член"
},
{
"id": 20,
"20": "не умеет ходить"
},
{
"id": 21,
"21": "пустил по кругу шуру"
},
{
"id": 22,
"22": "стриптезер без оброзавания"
},
{
"id": 23,
"23": "безмозглый пидор"
},
{
"id": 24,
"24": "999999999999999999 сосал и лизал"
},
{
"id": 25,
"25": "колличество оборотов его пропелера не исчесляется"
},
{
"id": 26,
"26": "я хз шо писать"
},
{
"id": 27,
"27": "петушара"
},
{
"id": 28,
"28": "спит у параши"
},
{
"id": 29,
"29": "спидозный"
},
{
"id": 30,
"30": "фембой"
},
{
"id": 31,
"31": "живет на нудистком пляже"
},
{
"id": 32,
"32": "живет в подвале"
},
{
"id": 33,
"33": "пидор со стажем в отлизывание яиц"
},
{
"id": 34,
"34": "увидел ребенка и повысил обороты перпелера"
},
{
"id": 35,
"35": "совал хуй в арбуз"
},
{
"id": 36,
"36": "терпилоид, но не позволит посылать себя нахуй"
},
{
"id": 37,
"37": "модная сиська"
},
{
"id": 38,
"38": "складочка"
},
{
"id": 39,
"39": "любит детскую порнографию духа"
},
{
"id": 40,
"40": "жидко пернул"
},
{
"id": 41,
"41": "ебакрыл"
},
{
"id": 42,
"42": "хуеглот глоп глоп"
},
{
"id": 43,
"43": "еврей"
},
{
"id": 44,
"44": "ебал собак, котов, попугаев, львов, тигров, обезьян, воробьев, хомяков, пантер, лис, кроликов, коз, баранов, ослов, лошадей, оленей"
},
{
"id": 45,
"45": "сосет и его ебали"
},
{
"id": 46,
"46": "объебаный наркошарик"
},
{
"id": 47,
"47": "вялый хуй"
},
{
"id": 48,
"48": "лох цветочный"
},
{
"id": 49,
"49": "украинец с гейскими наклонностями"
},
{
"id": 50,
"50": "обсасывает золотые я\b\b\b\b\b\bх\b"
},
{
"id": 51,
"51": "краник"
},
{
"id": 52,
"52": "нюхал яйца"
},
{
"id": 53,
"53": "фетишист"
},
{
"id": 54,
"54": "говорит гав гав"
},
{
"id": 55,
"55": "9\b лет как под наркозом хуйхуйхуй"
},
{
"id": 56,
"56": "очкастая пизда"
},
{
"id": 57,
"57": "не имеет прав он петух оалклкоал"
},
{
"id": 58,
"58": "зассаный банан"
},
{
"id": 59,
"59": "ZZZ ГОЙДА ПАТРИОТ ZZZ"
},
{
"id": 60,
"60": "варит меф"
},
{
"id": 61,
"61": "следит за тобой"
},
{
"id": 62,
"62": "сидит на дереве с биноклем"
},
{
"id": 63,
"63": "завел канал на порнхабе"
},
{
"id": 64,
"64": "четырехглазый пидор"
},
{
"id": 65,
"65": "поставил водник для раскумара"
},
{
"id": 66,
"66": "сидит на бутылке"
},
{
"id": 67,
"67": "магнит для маленьких детей"
},
{
"id": 68,
"68": ", чтоб его уебало нахуй"
},
{
"id": 69,
"69": "сел на фонарный столб"
},
{
"id": 70,
"70": "Сергей жирный уебан"
},
{
"id": 71,
"71": "Сергей тупорылый далбаеб"
},
{
"id": 72,
"72": "любит когда его дрючат в жопу потные мужички"
},
{
"id": 73,
"73": "это чмо+x"
},
{
"id": 74,
"74": "перчаточный гей"
},
{
"id": 75,
"75": "як"
},
{
"id": 76,
"76": "домогается до одеяла"
},
{
"id": 77,
"77": "автобот"
},
{
"id": 78,
"78": "спиздил учебник и засунул в жопу"
},
{
"id": 79,
"79": "униженый"
},
{
"id": 80,
"80": "опущенный"
},
{
"id": 81,
"81": "шалун с микро пенисом"
},
{
"id": 82,
"82": "https://vps-sni-site.site/secret-storage-7a2b/sergay.jpg"
},
{
"id": 83,
"83": "Борщевик ебал"
},
{
"id": 84,
"84": "фашист"
},
{
"id": 85,
"85": "залупа очкастая"
},
{
"id": 86,
"86": "пидор гнойный"
},
{
"id": 87,
"87": "любит глубоко"
},
{
"id": 88,
"88": "гном ебаный ублюдочный"
},
{
"id": 89,
"89": "рисует члены под окнами"
},
{
"id": 90,
"90": "серый анус"
},
{
"id": 91,
"91": "මගුලයි, තොපිට කෙලවෙලා"
},
{
"id": 92,
"92": "любит 卍卍卍"
},
{
"id": 93,
"93": "хуесос придорасович"
},
{
"id": 94,
"94": "и директриса ебаные пидоры"
},
{
"id": 95,
"95": "выпрыгнул в окно"
},
{
"id": 96,
"96": "а как?"
},
{
"id": 97,
"97": "ХАХАХА ТЫ ГДЕ ЭТО РАЗДОБЫЛ"
},
{
"id": 98,
"98": "В Советском Союзе делали всё тихо, не спеша, не дыша, не шиша. Четыре карандаша, не пержа, не жужжа, не гроша, черемша, не тужа, лёжа, дрожа, черемша. Вороша без ковша, со второго этажа, без гаража, без экипажа, без лишнего багажа, без массажа, без монтажа, без камуфляжа, черемша. Для антуража. Без знания падежа, без мятежа. В три ножа, два коржа, черемша. Без репортажа, без стажа. С лицом вождя, с душой моржа. С повадкой ежа, с запахом ржа. тихо, не спеша, без суеты, почти неслышно, с лёгкой улыбкой с тёплым сердцем медленно, но верно спокойно, без лишних слов с внутренним светом чуть задумчиво, но ясно с мягкой уверенностью бережно, как будто впервые с тихой радостью неспешно, наслаждаясь моментом с добрым ожиданием мягко, словно ветер светло, как утро вдумчиво, без суеты с теплом в глазах неторопливо, но глубоко с лёгкой надеждой тихо, но наполненно с уверенностью в хорошем спокойно, принимая всё с мягкой верой в лучшее чуть мечтательно с тихим счастьем внутренне спокойно с ощущением уюта с нежной благодарностью медленно, смакуя жизнь с тёплой тишиной внутриделали это тихо, почти неслышно не спеша, с лёгкой улыбкой с тёплым сердцем медленно, но верно спокойно, без лишних слов с внутренним светом чуть задумчиво, но ясно с мягкой уверенностью бережно, как будто впервые с тихой радостью неспешно, наслаждаясь моментом с добрым ожиданием мягко, словно ветер светло, как утро вдумчиво, без суеты с теплом в глазах неторопливо, но глубоко с лёгкой надеждой тихо, но наполненно с уверенностью в хорошем спокойно, принимая всё с мягкой верой в лучшее чуть мечтательно с тихим счастьем внутренне спокойно с ощущением уюта с нежной благодарностью медленно, смакуя жизнь с тёплой тишиной внутриделали это тихо, почти неслышно не спеша, с лёгкой улыбкой с тёплым сердцем медленно, но верно спокойно, без лишних слов с внутренним светом чуть задумчиво, но ясно с мягкой уверенностью бережно, как будто впервые с тихой радостью неспешно, наслаждаясь моментом с добрым ожиданием мягко, словно ветер светло, как утро вдумчиво, без суеты с теплом в глазах неторопливо, но глубоко с лёгкой надеждой тихо, но наполненно с уверенностью в хорошем спокойно, принимая всё с мягко"
},
{
"id": 99,
"99": "уебал навального"
},
{
"id": 100,
"100": "на острове сдох"
}
]

View File

@ -1,327 +0,0 @@
import json
import os
import random
import subprocess
import urllib.request
import requests
from pathlib import Path
from dotenv import load_dotenv
from telegram import Update
from telegram.ext import (
ApplicationBuilder,
CommandHandler,
ContextTypes,
ConversationHandler,
MessageHandler,
filters,
)
PREFIX_WORD = "серГЕЙ"
JSON_FILE = "sergay.json"
SERVICE_NAME = "sergay-bot"
# Токен для связи с сайтом (тот, что мы прописывали в api.php)
SITE_API_TOKEN = "super_secret_bot_token_123"
MESSAGE_100 = "Это сотое оскарбление для серГЕЯ пидоровича, человек каторый это добавил может идти нахуй, а серГЕЙ сын шлюхи"
WAITING_NEW_PHRASE = 1
P_TITLE = 2
P_PHOTOS = 3
def load_phrases(file_path: str) -> list[str]:
path = Path(file_path)
if not path.exists():
return []
with path.open("r", encoding="utf-8") as f:
data = json.load(f)
phrases = []
if isinstance(data, list):
for item in data:
if isinstance(item, dict):
item_id = item.get("id")
if isinstance(item_id, int):
value = item.get(str(item_id))
if isinstance(value, str) and value.strip():
phrases.append(value.strip())
else:
for value in item.values():
if isinstance(value, str) and value.strip():
phrases.append(value.strip())
elif isinstance(item, str) and item.strip():
phrases.append(item.strip())
return phrases
def load_raw_data(file_path: str) -> list:
path = Path(file_path)
if not path.exists():
return []
with path.open("r", encoding="utf-8") as f:
data = json.load(f)
if not isinstance(data, list):
raise ValueError("JSON должен содержать список")
return data
def save_new_phrase(file_path: str, phrase: str) -> None:
phrase = phrase.strip()
if not phrase:
raise ValueError("Пустую фразу добавлять нельзя")
data = load_raw_data(file_path)
existing_phrases = set()
max_id = 0
for item in data:
if isinstance(item, dict):
item_id = item.get("id")
if isinstance(item_id, int):
max_id = max(max_id, item_id)
value = item.get(str(item_id))
if isinstance(value, str):
existing_phrases.add(value.strip())
if phrase in existing_phrases:
raise ValueError("Такая фраза уже есть в базе")
new_id = max_id + 1
data.append({
"id": new_id,
str(new_id): phrase
})
path = Path(file_path)
with path.open("w", encoding="utf-8") as f:
json.dump(data, f, ensure_ascii=False, indent=4)
def restart_service() -> None:
subprocess.Popen(
["systemctl", "restart", SERVICE_NAME],
stdout=subprocess.DEVNULL,
stderr=subprocess.DEVNULL,
start_new_session=True,
)
def run_gitup() -> tuple[bool, str]:
result = subprocess.run(
["bash", "gitup.sh"],
capture_output=True,
text=True,
)
output = (result.stdout or "").strip()
error = (result.stderr or "").strip()
if result.returncode == 0:
return True, output or "gitup выполнен"
return False, error or output or "Ошибка выполнения gitup"
async def start(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
text = (
"Вот список команд:\n\n"
"Получить фразу — /phrase\n"
"Добавить фразу — /new\n"
"Добавить картинки на сайт — /new_p\n"
)
await update.message.reply_text(text)
async def phrase(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
try:
phrases = load_phrases(JSON_FILE)
if not phrases:
text = "Фразы пока не добавлены"
else:
phrase_text = random.choice(phrases)
text = f"{PREFIX_WORD} {phrase_text}".strip()
except Exception as e:
text = f"Ошибка: {e}"
# Шанс 30% прикрепить картинку
if random.random() < 0.3 and not text.startswith("Ошибка"):
try:
req = urllib.request.Request("https://www.vlv-s.site/api.php?action=random")
with urllib.request.urlopen(req, timeout=5) as response:
api_data = json.loads(response.read().decode('utf-8'))
img_url = api_data.get("url")
if img_url:
await context.bot.send_photo(
chat_id=update.effective_chat.id,
photo=img_url,
caption=text
)
return
except Exception as e:
print(f"Ошибка загрузки фото из API: {e}")
await update.message.reply_text(text)
async def new_start(update: Update, context: ContextTypes.DEFAULT_TYPE) -> int:
await update.message.reply_text("Введите фразу:")
return WAITING_NEW_PHRASE
async def new_save(update: Update, context: ContextTypes.DEFAULT_TYPE) -> int:
phrase_text = (update.message.text or "").strip()
if not phrase_text:
await update.message.reply_text("Фраза пустая. Введите фразу:")
return WAITING_NEW_PHRASE
try:
save_new_phrase(JSON_FILE, phrase_text)
await update.message.reply_text(f"Добавленно {PREFIX_WORD} {phrase_text}")
if len(load_phrases(JSON_FILE)) == 100 and MESSAGE_100.strip():
await update.message.reply_text(MESSAGE_100)
restart_service()
except Exception as e:
await update.message.reply_text(f"Ошибка: {e}")
return ConversationHandler.END
async def new_cancel(update: Update, context: ContextTypes.DEFAULT_TYPE) -> int:
await update.message.reply_text("Отменено")
return ConversationHandler.END
# --- ЛОГИКА ДЛЯ /new_p (Загрузка картинок) ---
async def new_p_start(update: Update, context: ContextTypes.DEFAULT_TYPE) -> int:
context.user_data['new_p_photos'] = []
await update.message.reply_text("Введите заголовок для новых картинок (он применится ко всем загружаемым сейчас фото):")
return P_TITLE
async def new_p_title(update: Update, context: ContextTypes.DEFAULT_TYPE) -> int:
context.user_data['new_p_title'] = update.message.text.strip()
await update.message.reply_text(
"Принято! Теперь отправляй мне картинки.\n"
"Можешь отправить одну или выделить сразу несколько в галерее.\n\n"
"Когда все нужные картинки загрузятся, отправь команду /done"
)
return P_PHOTOS
async def new_p_photo(update: Update, context: ContextTypes.DEFAULT_TYPE) -> int:
if update.message.photo:
# Сохраняем ID самого большого размера картинки
photo_id = update.message.photo[-1].file_id
context.user_data['new_p_photos'].append(photo_id)
return P_PHOTOS
async def new_p_done(update: Update, context: ContextTypes.DEFAULT_TYPE) -> int:
photos = context.user_data.get('new_p_photos', [])
title = context.user_data.get('new_p_title', 'Новое фото')
if not photos:
await update.message.reply_text("Ты не отправил ни одной картинки. Операция отменена.")
return ConversationHandler.END
await update.message.reply_text(f"⏳ Скачиваю и отправляю {len(photos)} фото на сервер. Это может занять пару минут...")
try:
files_payload = []
for i, pid in enumerate(photos):
new_file = await context.bot.get_file(pid)
p_bytes = await new_file.download_as_bytearray()
# Формируем пакет файлов так же, как отправляет браузер (массив photos[])
files_payload.append(('photos[]', (f'img_tg_{i}.jpg', p_bytes, 'image/jpeg')))
data_payload = {
'title': title,
'description': '',
'api_token': SITE_API_TOKEN
}
resp = requests.post("https://www.vlv-s.site/api.php?action=upload", files=files_payload, data=data_payload)
resp_json = resp.json()
if resp_json.get('success'):
await update.message.reply_text("✅ Успех! Картинки добавлены в галерею на сайт.")
else:
await update.message.reply_text(f"❌ Сайт вернул ошибку: {resp_json}")
except Exception as e:
await update.message.reply_text(f"❌ Ошибка соединения или загрузки: {e}")
# Очищаем данные
context.user_data.clear()
return ConversationHandler.END
async def gitup(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
await update.message.reply_text("Запускаю gitup...")
ok, output = run_gitup()
if len(output) > 3500:
output = output[:3500] + "\n\n...вывод обрезан"
if ok:
await update.message.reply_text(f"gitup выполнен\n\n{output}")
else:
await update.message.reply_text(f"Ошибка gitup\n\n{output}")
def main() -> None:
load_dotenv()
token = os.getenv("TG_TOKEN")
if not token:
raise ValueError("Не найден TG_TOKEN в .env")
app = ApplicationBuilder().token(token).build()
new_handler = ConversationHandler(
entry_points=[CommandHandler("new", new_start)],
states={
WAITING_NEW_PHRASE: [
MessageHandler(filters.TEXT & ~filters.COMMAND, new_save)
],
},
fallbacks=[CommandHandler("cancel", new_cancel)],
)
new_p_handler = ConversationHandler(
entry_points=[CommandHandler("new_p", new_p_start)],
states={
P_TITLE: [
MessageHandler(filters.TEXT & ~filters.COMMAND, new_p_title)
],
P_PHOTOS: [
MessageHandler(filters.PHOTO, new_p_photo),
CommandHandler("done", new_p_done)
]
},
fallbacks=[CommandHandler("cancel", new_cancel)],
)
app.add_handler(CommandHandler("start", start))
app.add_handler(CommandHandler("phrase", phrase))
app.add_handler(CommandHandler("gitup", gitup))
app.add_handler(new_handler)
app.add_handler(new_p_handler)
app.run_polling()
if __name__ == "__main__":
main()

14
code/sergay/app.py Normal file
View File

@ -0,0 +1,14 @@
import requests
import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
url = 'http://vps-sni-site.site:5000/api/random'
def req():
for i in range(50):
r = requests.get(url, verify=False)
data = r.json()
text = data[str(data["id"])]
print(f'серГЕЙ {text}')
req()

3
code/sergay/main.sh Normal file
View File

@ -0,0 +1,3 @@
sudo apt update && sudo apt install python3-pip
pip install requests --break-system-packages
pip install urllib3 --break-system-packages

4
install.sh Normal file
View File

@ -0,0 +1,4 @@
mkdir fff
cd fff
git clone https://github.com/hhu67/my.git
cd ~/fff/my

5
main.sh Normal file
View File

@ -0,0 +1,5 @@
sudo apt update && sudo apt install python3-pip -y
pip install requests --break-system-packages && echo 'yes'
pip install urllib3 --break-system-packages && echo 'yes'
pip install 'requests[socks]' --break-system-packages && echo 'yes'
echo yes

61
push.sh
View File

@ -1,61 +0,0 @@
#!/bin/bash
# =========================
# Настройки
# =========================
BRANCH="main"
# Цвета
GREEN='\033[0;32m'
BLUE='\033[0;34m'
RED='\033[0;31m'
NC='\033[0m'
echo -e "${BLUE}===> Добавляем изменения...${NC}"
git add .
# =========================
# Коммит
# =========================
if [ -z "$1" ]; then
msg="Update $(date +'%Y-%m-%d %H:%M:%S')"
else
msg="$1"
fi
echo -e "${BLUE}===> Коммитим: ${GREEN}$msg${NC}"
git commit -m "$msg" 2>/dev/null || echo -e "${BLUE}Нет новых изменений${NC}"
# =========================
# Пуш на Gitek
# =========================
echo -e "${BLUE}===> Пушим на Gitek...${NC}"
if ! git push gitek "$BRANCH"; then
echo -e "${RED}Ошибка при push в Gitek${NC}"
exit 1
fi
# =========================
# Синхронизация с GitHub
# =========================
echo -e "${BLUE}===> Синхронизируемся с GitHub...${NC}"
if ! git pull github "$BRANCH" --rebase; then
echo -e "${RED}Конфликт при pull!${NC}"
echo -e "${RED}Реши конфликты вручную, затем выполни:${NC}"
echo -e "${GREEN}git add . && git rebase --continue${NC}"
exit 1
fi
# =========================
# Пуш на GitHub
# =========================
echo -e "${BLUE}===> Пушим на GitHub...${NC}"
if ! git push github "$BRANCH"; then
echo -e "${RED}Ошибка при push в GitHub${NC}"
exit 1
fi
# =========================
# Готово
# =========================
echo -e "${GREEN}✔ Готово! Код обновлен в обоих репозиториях.${NC}"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 75 KiB

4
sh.sh Normal file
View File

@ -0,0 +1,4 @@
git pull origin main
git add .
git commit -m "update"
git push