Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows.Forms;
- using TLSharp.Core;
- using static BlastGram.Utility;
- using static BlastGram.TGUtility;
- using TeleSharp.TL;
- using System.IO;
- using System.Diagnostics;
- namespace BlastGram
- {
- public class Sender
- {
- private List<string> Box;
- private List<string> Senders;
- private List<string> Notsend;
- private List<string> Send;
- private int ID;
- private string HASH;
- private bool stop_send;
- private int Devider;
- public Sender(List<string> b, List<string> u, int API_ID, string API_HASH, int Dev)
- {
- Box = b;
- Senders = u;
- ID = API_ID;
- HASH = API_HASH;
- Devider = Dev;
- }
- public void StopWork()
- {
- stop_send = true;
- }
- public List<string> Comparer(List<string> input, int i)
- {
- int sum = Devider * i;
- List<string> outer = new List<string>();
- for(int j = 0; j<sum; j++)
- {
- try
- {
- outer.Add(input[input.Count-1]);
- input.RemoveAt(input.Count - 1);
- }
- catch
- {
- break;
- }
- }
- return outer;
- }
- public async Task DoWork(string SFor, string STo, string AFor, string ATo, string DFor, string DTo, string msg)
- {
- List<string> source = Comparer(Box, Senders.Count);
- Notsend = new List<string>();
- Send = new List<string>();
- for(int i = 0; i < Senders.Count; i++)
- {
- if (stop_send == true)
- break;
- if (source.Count <= 0)
- break;
- var client = new TelegramClient(ID, HASH, new FileSessionStore(), SessionPath(Senders[i], false));
- await client.ConnectAsync();
- if (client.IsUserAuthorized() == true)
- {
- WriteLog($"[Рассылка] Аккаунт {Senders[i]} авторизован");
- WriteLog("[Рассылка] Рассылаем");
- for (int j = 0; j < Devider; j++)
- {
- if (stop_send == true)
- break;
- if (source.Count <= 0)
- break;
- string message = Spin(msg);
- string contact = source[0];
- source.RemoveAt(0);
- string ch = CheckNumber(contact);
- try
- {
- if(ch == "Number")
- {
- WriteLog("[Рассылка] Импортируем контакт");
- var usr = await ImportUser(client, contact);
- int delyr = GetDelayer(DFor, DTo);
- WriteLog($"[Рассылка] Пауза между действиями {delyr}");
- await TaskEx.Delay(delyr);
- WriteLog($"[Рассылка] Отправляем сообщение юзеру {contact}");
- await SendMessage(client, usr, message);
- int dely = GetDelayer(DFor, DTo);
- WriteLog($"[Рассылка] Пауза между действиями {dely}");
- await TaskEx.Delay(delyr);
- }
- else
- {
- WriteLog("[Рассылка] Ищем пользователя");
- var usr = await SearchUser(client, contact);
- int delyr = GetDelayer(DFor, DTo);
- WriteLog($"[Рассылка] Пауза между действиями {delyr}");
- await TaskEx.Delay(delyr);
- WriteLog($"[Рассылка] Отправляем сообщение юзеру {contact}");
- await SendMessage(client, usr, message);
- int dely = GetDelayer(DFor, DTo);
- WriteLog($"[Рассылка] Пауза между действиями {dely}");
- await TaskEx.Delay(delyr);
- }
- WriteLog($"[Рассылка] Отправили сообщение юзеру {contact}");
- Send.Add(contact);
- }
- catch(Exception b)
- {
- Notsend.Add(contact);
- WriteLog($"[Рассылка] {b.Message}");
- if (b.Message == "USER_DEACTIVATED")
- {
- WriteLog("[Рассылка] Аккаунт в бане, меняем");
- break;
- }
- }
- int delim = GetDelayer(SFor, STo);
- WriteLog($"[Рассылка] Пауза между сообщениями {delim}");
- await TaskEx.Delay(delim);
- }
- }
- else
- {
- WriteLog($"[Рассылка] Аккаунт {Senders[i]} не авторизован");
- }
- int delay_one = GetDelayer(AFor,ATo);
- WriteLog($"[Рассылка] Спим {delay_one} перед сменой аккаунта");
- await Task.Delay(delay_one);
- }
- File.WriteAllLines($"Sender/Sended({Timestamp()}).txt", Send);
- File.WriteAllLines($"Sender/Notsended({Timestamp()}).txt", Notsend);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement