ch
Feedback
Доставка и перевозки Россия – Грузия

Доставка и перевозки Россия – Грузия

前往频道在 Telegram

🏡 ПЕРЕЕЗД В ГРУЗИЮ | RELOCATION GEORGIA

显示更多
530
订阅者
-124 小时
-857 天
-11430 天
帖子存档
api_id = 38275183 api_hash = '9b9aed2dc5cdee9ae25c064ae6915598' phone = '+995592253182'

if idx % 10 == 0: rate = (self.success_count / (self.success_count + self.fail_count)) * 100 if (self.success_count + self.fail_count) > 0 else 0 logger.info(f'📊 {self.success_count} ✅ / {self.fail_count} ❌ | {rate:.1f}% | {idx}/{total}') if idx < total: await asyncio.sleep(random.randint(MIN_DELAY, MAX_DELAY)) logger.info('='*50) logger.info('📊 ИТОГОВАЯ СТАТИСТИКА') logger.info(f'Всего попыток: {len(self.unique_chats_attempted)}') logger.info(f'✅ Успешно: {len(self.unique_chats_success)}') logger.info(f'❌ Ошибок: {len(self.unique_chats_failed)}') logger.info(f' • Запрещено писать: {self.error_cant_write}') logger.info(f' • FloodWait: {self.error_flood}') logger.info(f' • Прочие: {self.error_other}') logger.info(f'🚫 В чёрном списке: {len(self.blacklisted_chats)}') logger.info('='*50) def next_run_time(self): """Возвращает ближайшее время следующего запуска""" now = datetime.now() today_runs = [ now.replace(hour=h, minute=0, second=0, microsecond=0) for h in SCHEDULE_HOURS ] # Ищем первый запуск, который ещё не наступил for run in today_runs: if run > now: return run # Если все прошли — берём первый запуск завтра tomorrow = now + timedelta(days=1) return tomorrow.replace(hour=SCHEDULE_HOURS[0], minute=0, second=0, microsecond=0) async def scheduler(self, client): """Бесконечный цикл: ждёт нужное время и запускает кампанию""" campaign_count = 1 while True: next_run = self.next_run_time() wait_seconds = (next_run - datetime.now()).total_seconds() logger.info(f'⏰ Следующий запуск: {next_run.strftime("%Y-%m-%d %H:%M")} (через {int(wait_seconds//60)} мин)') await asyncio.sleep(wait_seconds) logger.info(f'🔄 КАМПАНИЯ #{campaign_count} — {datetime.now().strftime("%H:%M")}') # Сброс состояния перед каждой кампанией self.current_index = 0 self.success_count = 0 self.fail_count = 0 self.consecutive_failures = 0 self.unique_chats_attempted.clear() self.unique_chats_success.clear() self.unique_chats_failed.clear() self.error_cant_write = 0 self.error_flood = 0 self.error_other = 0 try: await self.run_campaign(client) except Exception as e: logger.error(f'❌ Ошибка кампании: {e}') # Меняем пост для следующей кампании self.post_index = (self.post_index + 1) % len(message_ids) campaign_count += 1 async def main(self): logger.info('⚡️ ЗАПУСК') client = TelegramClient( session_file, api_id, api_hash, connection_retries=10, retry_delay=5, auto_reconnect=True, flood_sleep_threshold=60, timeout=30 ) await client.start(phone=phone) me = await client.get_me() logger.info(f'✅ Авторизован: {me.first_name} (ID: {me.id})') self.joined_chats = await self.get_joined_chats(client) if not self.joined_chats: logger.error('❌ Нет доступных чатов!') return await self.scheduler(client) # === ЗАПУСК ДЛЯ PYDROID 3 === if name == 'main': sender = TelegramSender() loop = asyncio.get_event_loop() try: loop.run_until_complete(sender.main()) except KeyboardInterrupt: logger.info('🛑 Остановлено') except Exception as e: logger.critical(f'💥 Ошибка: {e}')

from telethon import TelegramClient, errors import time import random import asyncio import logging from datetime import datetime, timedelta # === ЛОГИРОВАНИЕ === logging.basicConfig( level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s', handlers=[logging.StreamHandler()] ) logger = logging.getLogger(name) # === ДАННЫЕ АККАУНТА === api_id = 36802259 api_hash = 'd7f414c448bf2b33783252bdc4f45f32' phone = '+905533620041' session_file = 'my_account_session' # === ИСТОЧНИК ПОСТОВ === source_chat_id = 3263682807 message_ids = [138, 141] # === ЦЕЛЕВЫЕ ЧАТЫ === target_chats = [ 1454505860, 1826026095, 1343666747, 1870129396, 2176346300, 1435280895, 1775363291, 1674160900, 2298198108, 2285339119, 1619596841, 1813625810, 2401755960, 1639323916, 1840758348, 2302681037, 1696065987, 2781809659, 2261626173, 3263098480, 1900743916, 1478052106, 1638320228, 2692817633, 1970568281, 2169727917, 1667978217, 2410823092, 2238520380, 1740049581, 1555229502, 2275788045, 3253078301, 1346961124, 3034635180, 1618558324, 1692657392, 1323303374, 1779107701, 1850966706, 1326620667, 2363008130, 2271920622, 1833253045, 2308985924, 2282547191, 2380208218, 1743940286, 1762240591, 2427747736, 1953280079, 1682141089, 3200623522, 2581520114, 2383854082, 2335951444, 2158107794, 1350754996, 2017480725, 2634412539, 1788507787, 2092613578, 1857256748, 2772011570, 2358042799, 1797046106, 1679993617, 1949585983, 3217068882, 1940348437, 2485877009, 3349690550, 1934133849, 1654082919, 2214571044, 2078485855, 2367385987, 1550355582, 3898777594, 2591085281, 2955979655, 1768220718, 3465759916, 2158706049, 1363361648, 3840817340, 1881910075, 2362563495, 1936691207, 1867537441, 2033822925, 2919579290, 1959284598, 2880157700, 2850479213, 1263253104, 2003608394, 1844767026, 1853721156, 2299535070, 2248238916, 2581520114, 3862095995, 3770012583, 1866571214, 2383854082, 2429233519, 1652016934, 2536167861, 2391150461, 1921275099, 3701192065, 1962466606, 3161136509, 2849291571, 2411402196, 4328481003, 1519224662, 2469475887, 2010613816, 2441719754, 1443993958, 3238226729, 1937379382, 2211327351, 3789757658, 2754031585, 2029251850, 3156748866, 1961632562, 3039415491, 2387508040, 1986109723, 2485792167, 2208911484, 3814166352, 3427078180, 2392843906, 3541364582, 1932391598, 3123874117, 3748173403, 2359141619, 3135605133, 1977927288, 2559445732, 1614343738, 2275221108, 2406928393, ] # === РАСПИСАНИЕ ЗАПУСКОВ === SCHEDULE_HOURS = [9, 14, 19, 21] # часы запуска (по местному времени устройства) # === ПАРАМЕТРЫ КАМПАНИИ === # Максимальная длительность одной кампании. При 20-35 сек задержке и ~160 чатах, # кампания укладывается примерно в 60-90 минут. Ограничиваем 1.5 часа, # чтобы успеть до следующего запуска. CAMPAIGN_DURATION = 90 * 60 # 90 минут MIN_DELAY = 20 MAX_DELAY = 35 class TelegramSender: def init(self): self.current_index = 0 self.post_index = 0 self.success_count = 0 self.fail_count = 0 self.joined_chats = [] self.consecutive_failures = 0 self.blacklisted_chats = set() self.unique_chats_attempted = set() self.unique_chats_success = set() self.unique_chats_failed = set() self.error_cant_write = 0 self.error_flood = 0 self.error_other = 0 logger.info(f'🎯 Чатов в списке: {len(target_chats)}') logger.info(f'📝 Сообщений в источнике: {len(message_ids)}') logger.info(f'🕒 Расписание: {SCHEDULE_HOURS}') async def get_joined_chats(self, client): logger.info("🔍 Проверяю чаты...") user_chats = set() max_retries = 3 for attempt in range(max_retries): try: async for dialog in client.iter_dialogs(): if hasattr(dialog.entity, 'id'): user_chats.add(dialog.entity.id) break except (ConnectionError, OSError) as e: logger.warning(f'Попытка {attempt+1}/{max_retries} не удалась: {e}') if attempt < max_retries - 1: await asyncio.sleep(5) await client.connect() else: raise joined = [c for c in target_chats if c in user_chats and c not in self.blacklisted_chats] logger.info(f'✅ Найдено {len(joined)} чатов из {len(target_chats)}') return joined async def forward_message(self, client, chat_id): try: if not client.is_connected(): await client.connect() await asyncio.sleep(1) msg_id = message_ids[self.post_index] source_msg = await client.get_messages(source_chat_id, ids=msg_id) if source_msg is None: logger.warning(f'⚠️ Пост #{msg_id} не найден') return False self.unique_chats_attempted.add(chat_id) await client.send_message(entity=chat_id, message=source_msg) self.unique_chats_success.add(chat_id) return True except errors.FloodWaitError as e: self.error_flood += 1 self.unique_chats_failed.add(chat_id) logger.warning(f'⏳ FloodWait {e.seconds} сек') await asyncio.sleep(e.seconds) return await self.forward_message(client, chat_id) except errors.RPCError as e: error_msg = str(e) logger.error(f'❌ RPC ошибка: {error_msg}') self.unique_chats_failed.add(chat_id) if "You can't write in this chat" in error_msg: self.error_cant_write += 1 elif 'FLOOD_WAIT' in error_msg: self.error_flood += 1 else: self.error_other += 1 if 'USER_BANNED_IN_CHANNEL' in error_msg or 'CHAT_NOT_EXISTS' in error_msg or 'CHANNEL_PRIVATE' in error_msg: self.blacklisted_chats.add(chat_id) return False raise except Exception as e: logger.error(f'❌ Неизвестная ошибка: {e}') self.unique_chats_failed.add(chat_id) self.error_other += 1 return False async def safe_send_message(self, client, chat_id): try: return await self.forward_message(client, chat_id) except Exception as e: logger.error(f'❌ Критическая ошибка в {chat_id}: {e}') self.unique_chats_failed.add(chat_id) self.error_other += 1 return False async def run_campaign(self, client): start = time.time() total = len(self.joined_chats) idx = self.current_index logger.info(f'🚀 Кампания старт: {total} чатов') logger.info(f'📝 Пост #{self.post_index + 1} из {len(message_ids)}') await asyncio.sleep(random.randint(5, 15)) while idx < total and time.time() - start < CAMPAIGN_DURATION: chat_id = self.joined_chats[idx] if not client.is_connected(): try: await client.connect() await asyncio.sleep(2) except: await asyncio.sleep(10) continue logger.info(f'[{idx+1}/{total}] 📤 Отправка в {chat_id}') success = await self.safe_send_message(client, chat_id) if success: self.success_count += 1 self.consecutive_failures = 0 logger.info(f'✅ {self.success_count} ✅ | {self.fail_count} ❌') else: self.fail_count += 1 self.consecutive_failures += 1 logger.warning(f'❌ {self.success_count} ✅ | {self.fail_count} ❌') if self.consecutive_failures >= 5: await asyncio.sleep(120) self.consecutive_failures = 0 idx += 1 self.current_index = idx

📦 Доставка РФ → Батуми WB • Ozon • СДЭК • Крупногабарит Личные вещи — от 350 ₽/кг Крупногабарит — от 500 ₽/кг Оплата при пол
📦 Доставка РФ → Батуми WB • Ozon • СДЭК • Крупногабарит Личные вещи — от 350 ₽/кг Крупногабарит — от 500 ₽/кг Оплата при получении. Написать → https://r.bothelp.io/tg?domain=KrasnodarBatumiBot&start=c1790323001381-ds&utm_source=batumi_expaty&utm_medium=telegram&utm_campaign=okazia_gruz

import asyncio from telethon import TelegramClient api_id = 32306125 api_hash = 'feb805ee69cdc12f1c943d72c84a71ef' session_name = 'my_session' client = TelegramClient(session_name, api_id, api_hash) async def main(): await client.start() print("Ссылки на публичные чаты и каналы:") print("-" * 50) async for dialog in client.iter_dialogs(): entity = dialog.entity # Проверяем, есть ли у чата username (публичная ссылка) # Для каналов и групп это атрибут .username if hasattr(entity, 'username') and entity.username: link = f"https://t.me/{entity.username}" print(f"{dialog.name} -> {link}") else: # Если username нет — это приватный чат, ссылки нет print(f"{dialog.name} -> (приватный, ссылки нет)") with client: client.loop.run_until_complete(main())

import asyncio from telethon import TelegramClient # Замените на ваши реальные данные api_id = 32306125 # Вставьте ваш API_ID api_hash = 'feb805ee69cdc12f1c943d72c84a71ef' # Вставьте ваш API_HASH session_name = 'my_session' client = TelegramClient(session_name, api_id, api_hash) async def main(): # Авторизация (при первом запуске попросит номер телефона и код) await client.start() print("Список всех ваших чатов и групп:") print("-" * 50) # Итерируемся по всем диалогам (личные, группы, каналы) async for dialog in client.iter_dialogs(): # Выводим название и ID # dialog.name — название чата # dialog.id — уникальный ID print(f"{dialog.name} | ID: {dialog.id}") # Примечание: Ссылки (например, https://t.me/...) есть только у публичных чатов # У приватных групп ссылки нет, так как доступ возможен только по приглашению # Если у диалога есть username, его можно вывести так: # if dialog.entity.username: # print(f" Ссылка: https://t.me/{dialog.entity.username}") # Запуск with client: client.loop.run_until_complete(main())

32306125 feb805ee69cdc12f1c943d72c84a71ef

import asyncio from telethon import TelegramClient # Замените на ваши реальные данные api_id = 1234567 # Вставьте ваш API_ID api_hash = 'ваш_api_hash' # Вставьте ваш API_HASH session_name = 'my_session' client = TelegramClient(session_name, api_id, api_hash) async def main(): # Авторизация (при первом запуске попросит номер телефона и код) await client.start() print("Список всех ваших чатов и групп:") print("-" * 50) # Итерируемся по всем диалогам (личные, группы, каналы) async for dialog in client.iter_dialogs(): # Выводим название и ID # dialog.name — название чата # dialog.id — уникальный ID print(f"{dialog.name} | ID: {dialog.id}") # Примечание: Ссылки (например, https://t.me/...) есть только у публичных чатов # У приватных групп ссылки нет, так как доступ возможен только по приглашению # Если у диалога есть username, его можно вывести так: # if dialog.entity.username: # print(f" Ссылка: https://t.me/{dialog.entity.username}") # Запуск with client: client.loop.run_until_complete(main())

import asyncio from telethon import TelegramClient # Замените на ваши реальные данные api_id = 1234567 # Вставьте ваш API_ID api_hash = 'ваш_api_hash' # Вставьте ваш API_HASH session_name = 'my_session' client = TelegramClient(session_name, api_id, api_hash) async def main(): # Авторизация (при первом запуске попросит номер телефона и код) await client.start() print("Список всех ваших чатов и групп:") print("-" * 50) # Итерируемся по всем диалогам (личные, группы, каналы) async for dialog in client.iter_dialogs(): # Выводим название и ID # dialog.name — название чата # dialog.id — уникальный ID print(f"{dialog.name} | ID: {dialog.id}") # Примечание: Ссылки (например, https://t.me/...) есть только у публичных чатов # У приватных групп ссылки нет, так как доступ возможен только по приглашению # Если у диалога есть username, его можно вывести так: # if dialog.entity.username: # print(f" Ссылка: https://t.me/{dialog.entity.username}") # Запуск with client: client.loop.run_until_complete(main())

🍂🚌 ОСЕННИЕ РЕЙСЫ CRIMEABUS — ПУТЕШЕСТВУЙ ЛЕГКО И С КОМФОРТОМ! 🌧🌍 🗓 Отправление — каждое чётное число! Обратные рейсы — по нечётным числам. 🚍 НАШ МАРШРУТ 🌊 Симферополь ⇄ Геническ ⇄ Мелитополь ⇄ Бердянск ⇄ Мариуполь ⇄ 🏙 Москва ⇄ Минск ⇄ Брест ⇄ 🌸 Варшава ⇄ Киев 🕛 Время отправления: 12:00 🌿 Подвоз по пути: Скадовск • Каховка • Новая Каховка • Чаплинка 💰 СТОИМОСТЬ БИЛЕТОВ ✨ 350 ∗∗🔥от3пассажиров—всего∗∗300 🇵🇱 Варшава → Киев — 2500 грн 🚌 КОМФОРТ В ДОРОГЕ ❄️ Климат-контроль 📶 Wi-Fi 🔌 Розетки у каждого места 👨‍✈️ 2 профессиональных водителя 🪑 Автобусы Setra (50 мест) и Mercedes Sprinter (20 мест) 🎁 ПРЕИМУЩЕСТВА ДЛЯ ВАС 💸 Без предоплаты 📄 Любые украинские документы 🐶 Животные — бесплатно 👶 Скидки детям и пенсионерам 👨‍👩‍👧 −50 $ при группе от 3 пассажиров 📦 ПОСЫЛКИ ПО МАРШРУТУ Мелитополь • Варшава • Киев — от 100 $ 📮 📲 БРОНИРОВАНИЕ Telegram/WhatsApp/Viber: +380997555488

🚌 РАСПИСАНИЕ И ЦЕНЫ КИЕВ → БАТУМИ 💰 200$ 📅 Вт • Чт • Сб • Вс 🧳 Багаж 20 кг ❄️ Кондиционер • Wi-Fi БАТУМИ → КИЕВ 💰 220📦Посылкиот120 или 9$/кг 📅 Вт • Чт • Сб • Вс 🧳 Багаж 20 кг ❄️ Кондиционер • Wi-Fi

📦 ДОСТАВКА ИЗ РОССИИ В ГРУЗИЮ СДЭК · ВАЙЛДБЕРРИЗ · ОЗОН · ЯНДЕКС Привезем заказы и посылки из России в Батуми. Без сложных с
📦 ДОСТАВКА ИЗ РОССИИ В ГРУЗИЮ СДЭК · ВАЙЛДБЕРРИЗ · ОЗОН · ЯНДЕКС Привезем заказы и посылки из России в Батуми. Без сложных схем. ◼️ КОМУ ЭТО НУЖНО Заказали на WB/Ozon, а доставки в Грузию нет? Привезем. Купили диван, холодильник, велосипед на Авито или барахолке? Привезем. Посылка через СДЭК застряла в Краснодаре? Заберем и довезем. ◼️ ЧТО ПЕРЕВОЗИМ Мебель, техника, личные вещи, одежда, книги Коммерческие грузы, запчасти, стройматериалы ◼️ ПОЧЕМУ МЫ Работаем официально (ИП, договор, чеки) Забираем по всей России, везем до двери в Батуми Помогаем с упаковкой ◼️ ЦЕНЫ Личные вещи, одежда, книги — от 350 ₽/кг Крупногабарит (мебель, техника, стройматериалы) — 500 ₽/кг Техника и крупный груз — цена индивидуально ◼️ КАК РАБОТАЕМ Вы кидаете ссылку или пишете, что нужно привезти. Мы забираем, пакуем, везем. Оплата при получении в Батуми. 📲 СВЯЗАТЬСЯ Telegram / WhatsApp: +995592253182 (Александр) Работаем с WB, Ozon, СДЭК, Яндекс Маркет.

☀️🏔 КАК ДОЕХАТЬ ДО ГРУЗИИ НЕ ДОРОГО? 🚐 Комфортабельные Mercedes Sprinter на 9 мест ❄️ Кондиционер • 📶 Wi-Fi • 🧳 Багаж до
☀️🏔 КАК ДОЕХАТЬ ДО ГРУЗИИ НЕ ДОРОГО? 🚐 Комфортабельные Mercedes Sprinter на 9 мест ❄️ Кондиционер • 📶 Wi-Fi • 🧳 Багаж до 25 кг 💰 ЦЕНЫ, КОТОРЫЕ УДИВЯТ: Краснодар → Тбилиси — 8 000 ₽ 🔥 Краснодар → Батуми — 10 000 ₽ 🌊 Крым → Тбилиси — 12 000 ₽ Крым → Батуми — 14 000 ₽ А вы знали, что ещё везём грузы? До 3 тонн из Батуми в Краснодар и обратно 📦 Личные вещи — от 350 ₽/кг Крупногабарит — от 500 ₽/кг 🤔 Как думаете, это дорого или дёшево за такой трансфер? Пишите в комментах! 👇 ВыЕзд КАЖДОЕ НЕЧЁТНОЕ ЧИСЛО Бронь в Telegram / WhatsApp в шапке профиля