@@ -120,59 +120,101 @@ async def general_invitation_to_the_group(_):
120120
121121 time_inviting_1 = TIME_INVITING_1 .value
122122 if time_inviting_1 == "" :
123- await self .gui_program .show_notification ( # ✅ Показываем уведомление пользователю
123+ await self .gui_program .show_notification (
124124 message = "Время должно быть больше 0"
125125 )
126126 self .page .go ("/inviting" )
127127 return
128128
129129 time_inviting_2 = TIME_INVITING_2 .value
130130 if time_inviting_2 == "" :
131- await self .gui_program .show_notification ( # ✅ Показываем уведомление пользователю
131+ await self .gui_program .show_notification (
132132 message = "Время должно быть больше 0"
133133 )
134134 self .page .go ("/inviting" )
135135 return
136136
137137 start = await self .app_logger .start_time ()
138- self .page .update () # Обновите страницу, чтобы сразу показать сообщение 🔄
138+ self .page .update ()
139139
140140 limit = get_limit (limits ) # Получаем лимит введенный пользователем
141141
142- usernames = await select_records_with_limit ( limit = limit , app_logger = self . app_logger )
143- await self . app_logger . log_and_display ( message = f"Список usernames: { usernames } \n \n Лимит на аккаунт { limit } " )
142+ # Получаем ВЕСЬ список пользователей для инвайтинга
143+ all_usernames = await select_records_with_limit ( limit = None , app_logger = self . app_logger )
144144
145- if not usernames :
145+ if not all_usernames :
146146 await self .app_logger .log_and_display (
147147 message = "В таблице members нет пользователей для инвайтинга."
148148 )
149- await self .gui_program .show_notification ( # ✅ Показываем уведомление пользователю
149+ await self .gui_program .show_notification (
150150 message = "🔚 Нет пользователей для инвайтинга"
151151 )
152152 self .page .go ("/inviting" )
153153 return
154154
155- for session_name in self .session_string :
155+ await self .app_logger .log_and_display (
156+ message = f"Всего пользователей для инвайтинга: { len (all_usernames )} \n "
157+ f"Лимит на аккаунт: { limit if limit else 'не установлен' } \n "
158+ f"Количество аккаунтов: { len (self .session_string )} "
159+ )
160+
161+ # 🔄 Индекс для отслеживания текущей позиции в списке пользователей
162+ current_user_index = 0
163+
164+ for account_number , session_name in enumerate (self .session_string , 1 ):
165+ # Проверяем, остались ли пользователи для инвайтинга
166+ if current_user_index >= len (all_usernames ):
167+ await self .app_logger .log_and_display (
168+ message = "✅ Все пользователи обработаны, инвайтинг завершен"
169+ )
170+ break
171+
156172 client : TelegramClient | None = await self .connect .client_connect_string_session (
157- session_name = session_name )
173+ session_name = session_name
174+ )
158175
159176 if client is None :
160177 await self .app_logger .log_and_display (
161- message = f"⚠️ Пропускаем сессию { session_name } - не удалось подключиться." )
178+ message = f"⚠️ Пропускаем сессию { session_name } - не удалось подключиться."
179+ )
162180 continue # Переходим к следующему аккаунту
163181
182+ # 📊 Определяем количество пользователей для текущего аккаунта
183+ if limit :
184+ # Если установлен лимит - берем N пользователей
185+ users_for_this_account = all_usernames [current_user_index :current_user_index + limit ]
186+ current_user_index += limit
187+ else :
188+ # Если лимит не установлен - распределяем поровну между аккаунтами
189+ remaining_accounts = len (self .session_string ) - account_number + 1
190+ remaining_users = len (all_usernames ) - current_user_index
191+ users_per_account = remaining_users // remaining_accounts
192+
193+ users_for_this_account = all_usernames [current_user_index :current_user_index + users_per_account ]
194+ current_user_index += users_per_account
195+
196+ if not users_for_this_account :
197+ await self .app_logger .log_and_display (
198+ message = f"⚠️ Для аккаунта { session_name } нет пользователей"
199+ )
200+ await client .disconnect ()
201+ continue
202+
203+ await self .app_logger .log_and_display (
204+ message = f"🔹 Аккаунт #{ account_number } : { session_name } \n "
205+ f" Будет обработано пользователей: { len (users_for_this_account )} \n "
206+ f" Диапазон: { current_user_index - len (users_for_this_account ) + 1 } -{ current_user_index } "
207+ )
208+
164209 # Подписываемся на группы
165210 await self .subscribe .subscribe_to_group_or_channel (client = client , groups = links )
166211 await self .app_logger .log_and_display (message = f"✅ Подписка на группы: { links } " )
167212
168- if len (usernames ) == 0 :
169- await self .app_logger .log_and_display (message = f"В таблице members нет пользователей для инвайтинга" )
170- await self .subscribe_unsubscribe_telegram .unsubscribe_from_the_group (client , links )
171- break # Прерываем работу и меняем аккаунт
172-
173- for username in usernames :
174- await self .app_logger .log_and_display (message = f"Приглашение пользователя: { username } " )
175- # Инвайтинг в группу по полученному списку
213+ # 🎯 Инвайтим ТОЛЬКО пользователей для этого аккаунта
214+ for idx , username in enumerate (users_for_this_account , 1 ):
215+ await self .app_logger .log_and_display (
216+ message = f" [{ idx } /{ len (users_for_this_account )} ] Приглашение: { username } "
217+ )
176218
177219 try :
178220 await self .add_user_test (
@@ -182,20 +224,123 @@ async def general_invitation_to_the_group(_):
182224 time_inviting_1 = TIME_INVITING_1 .value ,
183225 time_inviting_2 = TIME_INVITING_2 .value
184226 )
185- except KeyboardInterrupt : # Закрытие окна программы
186- await self .app_logger .log_and_display (message = translations ["ru" ]["errors" ]["script_stopped" ],
187- level = "error" )
227+ except KeyboardInterrupt :
228+ await self .app_logger .log_and_display (
229+ message = translations ["ru" ]["errors" ]["script_stopped" ],
230+ level = "error"
231+ )
232+ await client .disconnect ()
233+ return # Полностью прерываем работу
234+
235+ # Отписываемся от группы после завершения работы аккаунта
188236 await self .subscribe_unsubscribe_telegram .unsubscribe_from_the_group (
189237 client = client ,
190238 group_link = links
191239 )
192- await self .app_logger .log_and_display (message = f"[!] Инвайтинг окончен!" )
240+ await self .app_logger .log_and_display (
241+ message = f"✅ Аккаунт { session_name } завершил работу. "
242+ f"Приглашено: { len (users_for_this_account )} пользователей"
243+ )
244+ await client .disconnect ()
193245
246+ await self .app_logger .log_and_display (
247+ message = f"🎉 Инвайтинг полностью завершен!\n "
248+ f" Всего обработано: { current_user_index } из { len (all_usernames )} пользователей"
249+ )
194250 await self .app_logger .end_time (start = start )
195- await self .gui_program .show_notification ( # ✅ Показываем уведомление пользователю # Выводим уведомление пользователю
251+ await self .gui_program .show_notification (
196252 message = "🔚 Конец инвайтинга"
197253 )
198- self .page .go ("/inviting" ) # переходим к основному меню инвайтинга 🏠
254+ self .page .go ("/inviting" )
255+
256+ # async def general_invitation_to_the_group(_):
257+ # """
258+ # Основной метод для выполнения инвайтинга пользователей в указанные группы.
259+ # """
260+ #
261+ # links = await get_invitation_links()
262+ # if not links:
263+ # return # Нет ссылок — завершаем выполнение
264+ #
265+ # time_inviting_1 = TIME_INVITING_1.value
266+ # if time_inviting_1 == "":
267+ # await self.gui_program.show_notification( # ✅ Показываем уведомление пользователю
268+ # message="Время должно быть больше 0"
269+ # )
270+ # self.page.go("/inviting")
271+ # return
272+ #
273+ # time_inviting_2 = TIME_INVITING_2.value
274+ # if time_inviting_2 == "":
275+ # await self.gui_program.show_notification( # ✅ Показываем уведомление пользователю
276+ # message="Время должно быть больше 0"
277+ # )
278+ # self.page.go("/inviting")
279+ # return
280+ #
281+ # start = await self.app_logger.start_time()
282+ # self.page.update() # Обновите страницу, чтобы сразу показать сообщение 🔄
283+ #
284+ # limit = get_limit(limits) # Получаем лимит введенный пользователем
285+ #
286+ # usernames = await select_records_with_limit(limit=limit, app_logger=self.app_logger)
287+ # await self.app_logger.log_and_display(message=f"Список usernames: {usernames}\n\nЛимит на аккаунт {limit}")
288+ #
289+ # if not usernames:
290+ # await self.app_logger.log_and_display(
291+ # message="В таблице members нет пользователей для инвайтинга."
292+ # )
293+ # await self.gui_program.show_notification( # ✅ Показываем уведомление пользователю
294+ # message="🔚 Нет пользователей для инвайтинга"
295+ # )
296+ # self.page.go("/inviting")
297+ # return
298+ #
299+ # for session_name in self.session_string:
300+ # client: TelegramClient | None = await self.connect.client_connect_string_session(
301+ # session_name=session_name)
302+ #
303+ # if client is None:
304+ # await self.app_logger.log_and_display(
305+ # message=f"⚠️ Пропускаем сессию {session_name} - не удалось подключиться.")
306+ # continue # Переходим к следующему аккаунту
307+ #
308+ # # Подписываемся на группы
309+ # await self.subscribe.subscribe_to_group_or_channel(client=client, groups=links)
310+ # await self.app_logger.log_and_display(message=f"✅ Подписка на группы: {links}")
311+ #
312+ # if len(usernames) == 0:
313+ # await self.app_logger.log_and_display(message=f"В таблице members нет пользователей для инвайтинга")
314+ # await self.subscribe_unsubscribe_telegram.unsubscribe_from_the_group(client, links)
315+ # break # Прерываем работу и меняем аккаунт
316+ #
317+ # for username in usernames:
318+ # await self.app_logger.log_and_display(message=f"Приглашение пользователя: {username}")
319+ # # Инвайтинг в группу по полученному списку
320+ #
321+ # try:
322+ # await self.add_user_test(
323+ # client=client,
324+ # username_group=links,
325+ # username=username,
326+ # time_inviting_1=TIME_INVITING_1.value,
327+ # time_inviting_2=TIME_INVITING_2.value
328+ # )
329+ # except KeyboardInterrupt: # Закрытие окна программы
330+ # await self.app_logger.log_and_display(message=translations["ru"]["errors"]["script_stopped"],
331+ # level="error")
332+ # await self.subscribe_unsubscribe_telegram.unsubscribe_from_the_group(
333+ # client=client,
334+ # group_link=links
335+ # )
336+ # await self.app_logger.log_and_display(message=f"[!] Инвайтинг окончен!")
337+ #
338+ # await self.app_logger.end_time(start=start)
339+ # await self.gui_program.show_notification(
340+ # # ✅ Показываем уведомление пользователю # Выводим уведомление пользователю
341+ # message="🔚 Конец инвайтинга"
342+ # )
343+ # self.page.go("/inviting") # переходим к основному меню инвайтинга 🏠
199344
200345 async def launching_an_invite_once_an_hour (_ ):
201346 """
0 commit comments