а чем не устраивает просто подключить ее через общий код и использовать?Всем доброго времени суток ув! Нужно адаптировать либу TLSharp под ZP что-бы они нормально работали. За сколько возьметесь?
Лично мне, не удалось победить сего монстра. Код взлетает, ответ от телеги не приходита чем не устраивает просто подключить ее через общий код и использовать?
Из коробки подключается? async await? к зенке?Подключается все из коробки. Ничего править не нужно.
Подтверждаю подключается из коробки.Из коробки подключается? async await? к зенке?
...
using TLSharp.Core;
using TeleSharp.TL;
using BigMath;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Drawing;
...
namespace TG
{
/// <summary>
///
/// </summary>
class TLForm : Form
{
public static string ShowForm(string title, string phone) {
string code = "";
Form form = new Form() {
StartPosition = FormStartPosition.CenterScreen,
Text = title,
Width = 300
};
Label label = new Label()
{
Text = string.Format("Код полученный на номер {0}", phone),
Location = new Point(20, 10),
Width = 280
};
form.Controls.Add(label);
TextBox text = new TextBox() {
Location = new Point(80, 50),
Width = 140
};
form.Controls.Add(text);
Button button = new Button()
{
Text = "Готово",
Location = new Point(90, 140),
Size = new Size(120, 25)
};
form.Controls.Add(button);
button.Click += delegate (object sender, System.EventArgs e) {
code = text.Text;
form.Dispose();
};
form.ShowDialog();
return code;
}
}
class TLS
{
public static async Task<int> AuthTG(int ApiId, string ApiHash, string phone)
{
TLUser user = null;
var client = new TelegramClient(ApiId, ApiHash, sessionUserId: phone);
try
{
await client.ConnectAsync();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
bool status = client.IsUserAuthorized();
if (status) // авторизован, возвращаем Id
{
var request = new TeleSharp.TL.Users.TLRequestGetFullUser { Id = new TLInputUserSelf() };
try
{
TLUserFull me = await client.SendRequestAsync<TeleSharp.TL.TLUserFull>(request);
user = (TLUser)me.User;
return user.Id;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
else //неавторизован
{
try
{
string hash = await client.SendCodeRequestAsync(phone); // запрос на получение кода
string code = TLForm.ShowForm("Код Telegram", phone); // светим форму, ждем кода от телеги
try
{
user = await client.MakeAuthAsync(phone, hash, code); // авторизация по коду
return user.Id;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
return 0;
}
}
}
var task = TG.TLS.AuthTG(apiID, apiHash, phone);
return task.Result;
Все отлично подключилось. Большое спасибо.Подтверждаю подключается из коробки.
public static async Task<int> MessageToUserTG(IZennoPosterProjectModel project, int ApiId, string ApiHash, string phone, string sendto, string message = "Hello")
{
string[] data = sendto.Split('@');
string username = data[1];
int userid = Convert.ToInt32(data[0]);
var client = new TelegramClient(ApiId, ApiHash, sessionUserId: phone);
try
{
await client.ConnectAsync();
}
catch (Exception ex)
{
project.SendWarningToLog(ex.Message, true);
return 0;
}
TeleSharp.TL.Contacts.TLFound found = await client.SearchUserAsync(username);
try
{
var user = found.Users
.Where(x => x.GetType() == typeof(TLUser))
.Cast<TLUser>()
.FirstOrDefault(x => x.Id == userid);
await client.SendMessageAsync(new TLInputPeerUser() { UserId = user.Id, AccessHash = (long)user.AccessHash }, message);
return 1;
}
catch (Exception ex)
{
project.SendWarningToLog(ex.Message, true);
return 0;
}
return 0;
}
Приветсвую, у вас получилось реализовать данный метод для получения сообщений?Большое спасибо, вы очень помогаете. Наберусь наглости и попрошу метод для получения сообщений из чата ). Спасибо.