18/03/2021, 09:46

[C#] Gởi tin nhắn Telegram sử dụng TLSharp Lib Winform

Xin chào các bạn, bài viết hôm nay mình sẽ chia sẽ đến các bạn sử dụng thư viện TLSharp làm việc với chương trình Chat Telegram để gởi tin nhắn C# , Winform. Telegram là ứng dụng nhắn tin và gọi điện miễn phí qua internet gây được nhiều tiếng vang trên thế ...

Xin chào các bạn, bài viết hôm nay mình sẽ chia sẽ đến các bạn sử dụng thư viện TLSharp làm việc với chương trình Chat Telegram để gởi tin nhắn C#, Winform.

Telegram là ứng dụng nhắn tin và gọi điện miễn phí qua internet gây được nhiều tiếng vang trên thế giới trong thời gian dài.

Thế nhưng có lẽ với người dùng Việt còn khá xa lạ, nhưng thời gian gần đây nhiều người Việt cũng đã và đang sử dụng ứng dụng này.

Trong bài viết này, mình sẽ hướng dẫn các bạn cách sử dụng thư viện TLSharp để lấy thông tin danh bạ trên Account Telegram của mình.

Và gởi tin nhắn đến bạn bè của mình một cách nhanh chóng.

Giao diện demo ứng dụng gởi tin nhắn Telegram C# Winform:

telegram_csharp_demo

Thư viện TLSharp hỗ trợ các chức năng sau:

  1. IsPhoneRegisteredAsync
  2. SendCodeRequestAsync
  3. MakeAuthAsync
  4. SignUpAsync
  5. GetContactsAsync
  6. SendMessageAsync
  7. SendTypingAsync
  8. GetUserDialogsAsync
  9. SendUploadedPhoto
  10. SendUploadedDocument
  11. GetFile
  12. UploadFile
  13. SendPingAsync

Video demo ứng dụng C#:

Đầu tiên, từ giao diện Nuget các bạn cài đặt thư viện TLSharp vào Project của mình:

PM> Install-Package TLSharp -Version 0.1.0.574

Chi tiết các bạn có thể vào trang github của thư viện để tham khảo thêm về tài liệu ở link bên dưới:

https://github.com/sochix/TLSharp

Đầu tiên các bạn cần truy cập vào trang Telegram Developer để đăng ký ứng dụng, để lấy API_ID và API_HASH ở link sau:

https://my.telegram.org/auth

Sau khi truy cập vào website, các bạn nhập vào số điện thoại của mình.

Khi nhập số điện thoại xong, nó sẽ gởi code về ứng dụng chat của mình và bạn nhập token code vào.

Dưới đây là hình ảnh ID và Hash của ứng dụng mình đăng ký.

config_telegram

Full source code ứng dụng gởi tin nhắn Telegram C#:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
using TeleSharp.TL;
using TeleSharp.TL.Contacts;
using TeleSharp.TL.Upload;
using TLSharp.Core;

namespace TelegramDemo
{
    public partial class Form1 : Form
    {
        int apiId = 0000; //nhap id của bạn
        string apiHash = "xxxxxx";
        TelegramClient client;
        string myPhoneNumber = "+84xxxxx";
        string hash;
        TLContacts tLContact;
        string userIDSelected;
        public Form1()
        {
            InitializeComponent();
        }
       
        private async void button1_Click(object sender, EventArgs e)
        {
            File.Delete("session.dat");
             client = new TelegramClient(apiId, apiHash);
            await client.ConnectAsync();
             hash = await client.SendCodeRequestAsync(myPhoneNumber);         

        }

        private async void btnAuth_Click(object sender, EventArgs e)
        {
            await client.MakeAuthAsync(myPhoneNumber, hash, txtCode.Text);
            tLContact = await client.GetContactsAsync();
          
            foreach (TLUser user in tLContact.Users)
            {
                if (!string.IsNullOrEmpty(user.Phone)){
                    var fullName = $"{user.FirstName} {user.LastName}";
                    var phone = user.Phone;
                    string[] row = { fullName, phone, user.Id.ToString() };
                    var listviewItem = new ListViewItem(row);
                    listContact.Items.Add(listviewItem);
                }
               
            }

        }

        public Image ReadImageFromUser(TLUser user)
        {
            if (user.Photo == null) return Properties.Resources.no_avatar;
            var photo = ((TLUserProfilePhoto)user.Photo);
            var photoLocation = (TLFileLocation)photo.PhotoBig;

            TLFile file =  client.GetFile(new TLInputFileLocation()
            {
                LocalId = photoLocation.LocalId,
                Secret = photoLocation.Secret,
                VolumeId = photoLocation.VolumeId
            }, 1024 * 256).Result;
           
            Image image;
            using (var m = new MemoryStream(file.Bytes))
            {
                 image = Image.FromStream(m);
            }
            return image;
        }

        private void listContact_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (listContact.SelectedItems.Count == 0)
                return;
            ListViewItem item = listContact.SelectedItems[0];
            var phone = item.SubItems[1].Text;
            userIDSelected = item.SubItems[2].Text;

            var user = tLContact.Users
               .Where(x => x.GetType() == typeof(TLUser))
               .Cast<TLUser>()
               .FirstOrDefault(x => x.Phone == phone);

            var userPhoto = ReadImageFromUser(user);
            picPhoto.Image = userPhoto;
        }

        private async void btnSendMessage_Click(object sender, EventArgs e)
        {
            await client.SendMessageAsync(new TLInputPeerUser() { UserId = Convert.ToInt32(userIDSelected) }, txtMessage.Text);
        }
    }
}

Thanks for watching!

DOWNLOAD SOURCE

Tags: send telegram message c#telegram c#tlsharp c#
0