TLSharp/Apps/ClientConsoleApp/Program.cs

116 lines
4.3 KiB
C#
Raw Normal View History

2018-02-05 22:27:15 +01:00
using System;
using System.Collections.Generic;
using System.Configuration;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using TeleSharp.TL;
using TLSharp.Core;
namespace ClientConsoleApp
{
class Program
{
private static string NumberToSendMessage => ConfigurationManager.AppSettings[nameof(NumberToSendMessage)];
static void Main(string[] args)
{
System.Threading.Thread.Sleep(2000);
Console.WriteLine("Hello World!");
var client = GetTlgClient().Result;
var normalizedNumber = NumberToSendMessage.StartsWith("+") ?
NumberToSendMessage.Substring(1, NumberToSendMessage.Length - 1) :
NumberToSendMessage;
var result = client.GetContactsAsync().Result;
var user = result.Users
.OfType<TLUser>()
.FirstOrDefault(x => x.Phone == normalizedNumber);
var rr = client.SendTypingAsync(new TLInputPeerUser() { UserId = user.Id }).Result;
Thread.Sleep(3000);
var rrr = client.SendMessageAsync(new TLInputPeerUser() { UserId = user.Id }, "TEST").Result;
}
private static async Task<TLSharp.Core.TelegramClient> GetTlgClient()
{
string ApiHash = ConfigurationManager.AppSettings["ApiHash"];
int ApiId = int.Parse(ConfigurationManager.AppSettings["ApiId"]);
//string AuthCode = ConfigurationManager.AppSettings["AuthCode"];
string MainPhoneNumber = ConfigurationManager.AppSettings["NumberToAuthenticate"];
var client = new TelegramClient(ApiId, ApiHash, null, "session", null, "127.0.0.1", 5000);
var phoneCodeHash = string.Empty;
authenticated:
Console.WriteLine("Start app");
client.ConnectAsync().Wait();
Console.WriteLine("MakeAuthentication");
await MakeAuthentication(client, MainPhoneNumber);
Console.WriteLine("Connected");
if (!client.IsUserAuthorized())
{
Console.WriteLine("User not autorized");
if (string.IsNullOrEmpty(phoneCodeHash))
{
phoneCodeHash = await client.SendCodeRequestAsync(MainPhoneNumber);
goto authenticated;
}
Console.WriteLine("Plase enter new AuthCode:");
var AuthCode = Console.ReadLine();
var user = await client.MakeAuthAsync(MainPhoneNumber, phoneCodeHash, AuthCode);
Console.WriteLine("Login successfull.");
}
return client;
}
private static async Task MakeAuthentication(TLSharp.Core.TelegramClient client, string mainPhoneNumber)
{
var hash = await client.SendCodeRequestAsync(mainPhoneNumber);
Console.WriteLine("waiting for code");
var code = Console.ReadLine();
var user = await client.MakeAuthAsync(mainPhoneNumber, hash, code);
if (!client.IsUserAuthorized())
{
hash = await client.SendCodeRequestAsync(mainPhoneNumber);
Console.WriteLine("please try again.add code");
code = Console.ReadLine();
user = await client.MakeAuthAsync(mainPhoneNumber, hash, code);
}
}
private static void TestTcpClient()
{
var tcpClient = new TcpClient();
tcpClient.Connect(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 5000));
if (tcpClient.Connected)
{
using (var memoryStream = new MemoryStream())
{
using (var binaryWriter = new BinaryWriter(memoryStream))
{
binaryWriter.Write((long)0);
binaryWriter.Write(1234);
binaryWriter.Write(20);
binaryWriter.Write(8000);
byte[] packet = memoryStream.ToArray();
tcpClient.GetStream().WriteAsync(packet, 0, packet.Length).Wait();
}
}
}
System.Threading.Thread.Sleep(20000);
}
}
}