Бот

  • Автор темы Автор темы Shytov
  • Дата начала Дата начала

Shytov

Client
Регистрация
11.09.2018
Сообщения
172
Реакции
40
Баллы
28
Всем доброго времени суток ув! Нужно адаптировать либу под ZP что-бы они нормально работали. За сколько возьметесь?
 
Последнее редактирование:
Всем доброго времени суток ув! Нужно адаптировать либу TLSharp под ZP что-бы они нормально работали. За сколько возьметесь?
а чем не устраивает просто подключить ее через общий код и использовать?
 
Из коробки подключается? 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
Подтверждаю подключается из коробки.

Все отлично подключилось. Большое спасибо.
Если бы вы еще подсказали как, например, отправить сообщение или получить сообщения из чата, было бы просто чудесно)
 
Метод для отправки сообщения, возвращает 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
Большое спасибо, вы очень помогаете. Наберусь наглости и попрошу метод для получения сообщений из чата ). Спасибо.
 
Большое спасибо, вы очень помогаете. Наберусь наглости и попрошу метод для получения сообщений из чата ). Спасибо.
Приветсвую, у вас получилось реализовать данный метод для получения сообщений?
 

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