Бот

Shytov

Client
Регистрация
11.09.2018
Сообщения
175
Благодарностей
39
Баллы
28
Всем доброго времени суток ув! Нужно адаптировать либу под ZP что-бы они нормально работали. За сколько возьметесь?
 
Последнее редактирование:

AZANIR

Client
Регистрация
09.06.2014
Сообщения
405
Благодарностей
198
Баллы
43
Всем доброго времени суток ув! Нужно адаптировать либу TLSharp под ZP что-бы они нормально работали. За сколько возьметесь?
а чем не устраивает просто подключить ее через общий код и использовать?
 

Shytov

Client
Регистрация
11.09.2018
Сообщения
175
Благодарностей
39
Баллы
28

stud

Client
Регистрация
23.06.2013
Сообщения
88
Благодарностей
140
Баллы
33
Подключается все из коробки. Ничего править не нужно.
 

Shytov

Client
Регистрация
11.09.2018
Сообщения
175
Благодарностей
39
Баллы
28

Acedouble

Client
Регистрация
05.01.2018
Сообщения
21
Благодарностей
14
Баллы
3
Из коробки подключается? async await? к зенке?
Подтверждаю подключается из коробки.
Пример авторизации:
1. В GAC прописываем библиотеки
2. В общий код добавляем вот это:
C#:
...
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;
        }
    }
}
3. В проекте в своем коде вызываем метод AuthTG
C#:
var task = TG.TLS.AuthTG(apiID, apiHash, phone);
return task.Result;
получаем Id авторизованого юзера или 0 если авторизация не прошла.
 
  • Спасибо
Реакции: Dolgoff, Shytov и NNzet

Dolgoff

Client
Регистрация
13.11.2015
Сообщения
14
Благодарностей
14
Баллы
3
Подтверждаю подключается из коробки.
Все отлично подключилось. Большое спасибо.
Если бы вы еще подсказали как, например, отправить сообщение или получить сообщения из чата, было бы просто чудесно)
 

Acedouble

Client
Регистрация
05.01.2018
Сообщения
21
Благодарностей
14
Баллы
3
Метод для отправки сообщения, возвращает 0 или 1
sendto - строка в виде username@12365455 после собаки id пользователя для отправки


C#:
    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;
        }
 
  • Спасибо
Реакции: Zmaster и Dolgoff

Dolgoff

Client
Регистрация
13.11.2015
Сообщения
14
Благодарностей
14
Баллы
3
Большое спасибо, вы очень помогаете. Наберусь наглости и попрошу метод для получения сообщений из чата ). Спасибо.
 

vasyaya

Client
Регистрация
09.02.2015
Сообщения
555
Благодарностей
35
Баллы
28
Большое спасибо, вы очень помогаете. Наберусь наглости и попрошу метод для получения сообщений из чата ). Спасибо.
Приветсвую, у вас получилось реализовать данный метод для получения сообщений?
 

Кто просматривает тему: (Всего: 2, Пользователи: 0, Гости: 2)