fix command ana params
This commit is contained in:
@@ -46,6 +46,12 @@ class TaskStorage:
|
||||
"chat_id": params.chat_id,
|
||||
"user_id": params.user_id,
|
||||
"visits_percent": params.visits_percent,
|
||||
"min_click_delay": params.min_click_delay,
|
||||
"max_click_delay": params.max_click_delay,
|
||||
"min_series": params.min_series,
|
||||
"max_series": params.max_series,
|
||||
"min_ctr": params.min_ctr,
|
||||
"max_ctr": params.max_ctr,
|
||||
"started_at": params.started_at.isoformat() if params.started_at else None,
|
||||
}
|
||||
|
||||
@@ -73,6 +79,12 @@ class TaskStorage:
|
||||
chat_id=data.get("chat_id"),
|
||||
user_id=data.get("user_id"),
|
||||
visits_percent=data.get("visits_percent", 0.0),
|
||||
min_click_delay=data.get("min_click_delay", 5),
|
||||
max_click_delay=data.get("max_click_delay", 15),
|
||||
min_series=data.get("min_series", data.get("visits_per_link", 1)),
|
||||
max_series=data.get("max_series", data.get("visits_per_link", 1)),
|
||||
min_ctr=data.get("min_ctr", 0.8),
|
||||
max_ctr=data.get("max_ctr", 1.0),
|
||||
)
|
||||
if data.get("started_at"):
|
||||
try:
|
||||
|
||||
+46
-18
@@ -24,6 +24,8 @@ class TaskParams:
|
||||
max_delay: int = 30
|
||||
min_reading: int = 5
|
||||
max_reading: int = 15
|
||||
min_click_delay: int = 5 # задержка между кликами внутри серии
|
||||
max_click_delay: int = 15
|
||||
|
||||
# Лимиты
|
||||
max_visits: Optional[int] = None
|
||||
@@ -37,6 +39,10 @@ class TaskParams:
|
||||
allowed_domains: Optional[List[str]] = None
|
||||
|
||||
visits_percent: float = 0.0 # % от зрителей (0 = использовать visits_per_link)
|
||||
min_series: int = 1 # для user_visit: мин. кликов в серии
|
||||
max_series: int = 3 # для user_visit: макс. кликов в серии
|
||||
min_ctr: float = 0.8 # для twitch_irc: мин. коэф. эффективности клика
|
||||
max_ctr: float = 1.0 # для twitch_irc: макс. коэф. эффективности клика
|
||||
|
||||
# Состояние
|
||||
paused: bool = False
|
||||
@@ -82,6 +88,12 @@ class TaskParams:
|
||||
self.force_reading = None
|
||||
return reading
|
||||
return random.randint(self.min_reading, self.max_reading)
|
||||
|
||||
def get_click_delay(self) -> int:
|
||||
return random.randint(self.min_click_delay, self.max_click_delay)
|
||||
|
||||
def get_series_size(self) -> int:
|
||||
return random.randint(self.min_series, self.max_series)
|
||||
|
||||
def get_status_emoji(self) -> str:
|
||||
if self.stopped:
|
||||
@@ -109,34 +121,50 @@ class TaskParams:
|
||||
duration = ""
|
||||
if self.started_at and (self.completed or self.stopped):
|
||||
delta = datetime.now() - self.started_at
|
||||
duration = f"├ ⏱️ Длилась: {delta.seconds // 60} мин\n"
|
||||
|
||||
# Домены
|
||||
domains_text = ""
|
||||
if self.allowed_domains:
|
||||
domains_text = f"├ 🌐 Домены: {', '.join(self.allowed_domains)}\n"
|
||||
else:
|
||||
domains_text = "├ 🌐 Домены: все\n"
|
||||
|
||||
duration = f"├ 🕐 Длилась: {delta.seconds // 60} мин\n"
|
||||
|
||||
domains_text = (
|
||||
f"├ 🌐 Домены: {', '.join(self.allowed_domains)}\n"
|
||||
if self.allowed_domains else
|
||||
"├ 🌐 Домены: все (без фильтра)\n"
|
||||
)
|
||||
ctr_str = (
|
||||
f"{self.min_ctr}%–{self.max_ctr}%"
|
||||
if self.min_ctr != self.max_ctr
|
||||
else f"{self.min_ctr}%"
|
||||
)
|
||||
ctr_line = f"├ 📊 CTR: {ctr_str} (зрители × CTR% = кликов)"
|
||||
monitor = (
|
||||
f"{self.monitor_minutes} мин" if self.monitor_minutes > 0 else "бесконечно"
|
||||
)
|
||||
|
||||
return (
|
||||
f"📺 **{self.channel}**\n"
|
||||
f"├ Статус: {status}\n"
|
||||
f"├ 🔗 Ссылок найдено: {self.links_found}\n"
|
||||
f"├ 📊 Всего визитов: {self.total_visits}\n"
|
||||
f"├ ✅ Успешно: {self.successful_visits}\n"
|
||||
f"├ ⏱️ Задержка: {self.min_delay}-{self.max_delay}с\n"
|
||||
f"├ 📖 Чтение: {self.min_reading}-{self.max_reading}с\n"
|
||||
f"├ 🔗 На ссылку: {self.visits_per_link} визитов\n"
|
||||
f"├ ⏰ Мониторинг: {self.monitor_minutes} мин\n"
|
||||
f"├ 🔗 Ссылок найдено в чате: {self.links_found}\n"
|
||||
f"├ 📊 Всего кликов: {self.total_visits}\n"
|
||||
f"├ ✅ Успешных кликов: {self.successful_visits}\n"
|
||||
f"{ctr_line}\n"
|
||||
f"├ 🔗 Резерв (без GQL): {self.visits_per_link}\n"
|
||||
f"├ ⏱️ Пауза между переходами: {self.min_delay}–{self.max_delay} сек\n"
|
||||
f"├ 📖 Время на странице: {self.min_reading}–{self.max_reading} сек\n"
|
||||
f"├ ⏰ Длительность мониторинга: {monitor}\n"
|
||||
f"{domains_text}"
|
||||
f"{duration}"
|
||||
)
|
||||
else:
|
||||
series_range = (
|
||||
f"{self.min_series}" if self.min_series == self.max_series
|
||||
else f"{self.min_series}–{self.max_series}"
|
||||
)
|
||||
return (
|
||||
f"🌐 `{self.url[:50]}`\n"
|
||||
f"├ Статус: {self.get_status_text()}\n"
|
||||
f"├ 📊 Визитов: {self.total_visits}\n"
|
||||
f"├ ✅ Успешно: {self.successful_visits}\n"
|
||||
f"├ 📊 Выполнено: {self.successful_visits}/{self.max_visits} переходов\n"
|
||||
f"├ 🔢 Кликов в серии: {series_range}\n"
|
||||
f"├ ⏳ Задержка между кликами: {self.min_click_delay}–{self.max_click_delay} сек\n"
|
||||
f"├ ⏱️ Пауза между сериями: {self.min_delay}–{self.max_delay} сек\n"
|
||||
f"├ 📖 Время на странице: {self.min_reading}–{self.max_reading} сек\n"
|
||||
)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user