ZepLaoSharp [EN - VI]
Thư viện .NET không chính thức dùng để lập trình userbot bằng API nội bộ của Zalo.
Cảnh báo: Sử dụng thư viện này để tự động hóa các tác vụ trên Zalo có thể vi phạm Điều khoản dịch vụ của Zalo và có thể dẫn đến việc tài khoản của bạn bị khóa hoặc bị cấm. Sử dụng thư viện này đồng nghĩa với việc bạn đã hiểu rõ và chấp nhận rủi ro và tôi không chịu trách nhiệm về bất kỳ hậu quả nào xảy ra.
Comming soon
Comming soon
using EHVN.ZepLaoSharp;
using EHVN.ZepLaoSharp.Auth;
List<ZaloCookie> cookies = ... // Lấy cookie từ tài khoản Zalo của bạn
string imei = ... // IMEI của thiết bị
string userAgent = ... // User-Agent của trình duyệt hoặc ứng dụng Zalo PC
int apiType = 24; // Loại API
int apiVersion = 658; // Phiên bản API
string computerName = "Web"; // Tên máy tính hoặc "Web" nếu dùng thông tin đăng nhập từ trình duyệt
ZaloClientBuilder clientBuilder = ZaloClientBuilder.CreateDefault()
.WithCredential(new LoginCredential(cookies, imei, userAgent))
.SetAPIType(apiType)
.SetAPIVersion(apiVersion)
.SetComputerName(computerName);
ZaloClient client = clientBuilder.Build();
await client.ConnectAsync(); // Kết nối đến máy chủ Zalo
Console.WriteLine("Logged in as: " + client.CurrentUser!.DisplayName);
client.DisconnectAsync(); // Ngắt kết nối máy chủ Zalo
using EHVN.ZepLaoSharp.Entities;
long groupId = ... // ID của nhóm
ZaloGroup group = await client.GetGroupAsync(groupId);
long userId = ... // ID của người dùng
ZaloUser user = await client.GetUserAsync(userId);
using EHVN.ZepLaoSharp.FFMpeg;
ZaloMessage messageToBeQuoted = ... // Tin nhắn cần trích dẫn
ZaloAttachment attachment = ZaloAttachment.FromFile(@"img3.png");
attachment.IsRawFile = true; // Gửi dưới dạng tệp gốc
ZaloAttachment attachment2 = ZaloAttachment.FromFile(@"img4.png");
attachment2.SendAsSticker = true; // Gửi dưới dạng sticker
ZaloMessageBuilder messageBuilder =
new ZaloMessageBuilder()
.GroupMediaMessages() //Nhóm tin nhắn đa phương tiện
.AddAttachment(ZaloAttachment.FromFile(@"music.mp3")) // Thêm tệp âm thanh phát được dưới dạng tin nhắn thoại
.AddAttachment(ZaloAttachment.FromFile(@"voice.aac")) // Thêm tin nhắn thoại
.AddAttachment(ZaloAttachment.FromFile(@"img.jpg")) // Thêm ảnh
.AddAttachment(ZaloAttachment.FromFile(@"img2.png")) // Thêm ảnh
.AddAttachment(attachment)
.AddAttachment(attachment2)
.AddAttachment(ZaloAttachment.FromFile(@"sales-report.pdf")) // Thêm tệp đính kèm
.AddAttachment(AttachmentUtils.FromVideoFile(@"video.mp4")) // Thêm video
.WithLinkEmbed(new ZaloLinkEmbed("https://github.com/ElectroHeavenVN/ZepLaoSharp")) // Thêm liên kết
.WithLocation("Trường Đại học FPT Hà Nội", 21.012536881345767, 105.52569941114935) // Thêm vị trí
.WithContactCard(userId, "09XXXXXXXX") // Thêm danh thiếp
.WithContent("abc1234") // Nội dung tin nhắn
.WithQuoteMessage(messageToBeQuoted) // Tin nhắn trích dẫn
.WithBankAccount(970458, "bankAccountNumber", "Nguyễn Văn A") // Thêm tài khoản ngân hàng
.AddSticker(await client.GetStickerAsync(1357)) // Thêm sticker
.DisappearAfter(1000 * 60 * 6) // Tin nhắn sẽ tự động biến mất sau 6 phút
;
await group.TriggerTypingAsync(); // Gửi trạng thái đang gõ
List<ZaloGroupMessage> groupMessages = await group.SendMessageAsync(messageBuilder); // Gửi tin nhắn đến nhóm
await user.TriggerTypingAsync(); // Gửi trạng thái đang gõ
List<ZaloDirectMessage> directMessages = await user.SendMessageAsync(messageBuilder); // Gửi tin nhắn trực tiếp đến người dùng
long groupId2 = ... // ID của nhóm khác
long groupId3 = ... // ID của nhóm khác
long groupId4 = ... // ID của nhóm khác
ZaloGroup group2 = await client.GetGroupAsync(groupId2);
ZaloGroup group3 = await client.GetGroupAsync(groupId3);
ZaloGroup group4 = await client.GetGroupAsync(groupId4);
long userId2 = ... // ID của người dùng khác
long userId3 = ... // ID của người dùng khác
long userId4 = ... // ID của người dùng khác
foreach (ZaloMessage message in directMessages)
{
List<ZaloGroupMessage> forwardedMessages = await message.ForwardAsync([group2, group3]); // Chuyển tiếp tin nhắn đến các nhóm
foreach (ZaloGroupMessage forwardedMessage in forwardedMessages)
{
await forwardedMessage.ForwardAsync([group4], 30 * 1000); // Chuyển tiếp tin nhắn đến nhóm khác, các tin nhắn sẽ tự xóa sau 30 giây
}
}
foreach (ZaloMessage message in groupMessages)
{
List<ZaloDirectMessage> forwardedMessages = await message.ForwardAsync([userId2, userId3]); // Chuyển tiếp tin nhắn đến người dùng
foreach (ZaloDirectMessage forwardedMessage in forwardedMessages)
{
await forwardedMessage.ForwardAsync([userId4], 30 * 1000); // Chuyển tiếp tin nhắn đến người dùng khác, các tin nhắn sẽ tự xóa sau 30 giây
}
}
foreach (ZaloMessage message in directMessages)
{
await message.RecallAsync();
}
foreach (ZaloMessage message in groupMessages)
{
await message.RecallAsync();
}
foreach (ZaloMessage message in directMessages)
{
await message.DeleteAsync(true); //Chỉ xóa cho mình tôi, đối phương sẽ vẫn thấy tin nhắn
}
foreach (ZaloMessage message in groupMessages)
{
await message.DeleteAsync(); //Xóa cho tất cả mọi người
}
foreach (ZaloMessage message in directMessages)
{
await message.AddReactionAsync("/-strong"); //Like
await message.AddReactionAsync("/-heart", 50); //50 tim
}
foreach (ZaloMessage message in groupMessages)
{
await message.AddReactionAsync("Custom reaction", Random.Shared.Next(10000, 1000000)); //Thêm biểu tượng cảm xúc tùy chỉnh với ID ngẫu nhiên
await message.RemoveAllReactionsAsync(); //Xóa tất cả biểu tượng cảm xúc của tôi
}
long lastMessageId = 0;
(List<ZaloGroupMessage> GroupMessages, bool HasMore) messages = await group.GetRecentGroupMessagesAsync(lastMessageId, 20); // Lấy 20 tin nhắn gần đây nhất
if (messages.HasMore)
{
(List<ZaloGroupMessage> GroupMessages, bool HasMore) messages2 = await group.GetRecentGroupMessagesAsync(messages.GroupMessages.First().ID, 20); // Lấy 20 tin nhắn tiếp theo
}
ZaloMember member = await group.GetMemberAsync(userId); // Lấy thông tin thành viên
Console.WriteLine($"Member: {member.DisplayName}, Role: {member.Role}");
await group.RemoveMembersAsync([member]); // Xóa thành viên khỏi nhóm
await group.BlockMembersAsync([member]); // Chặn thành viên khỏi nhóm, họ sẽ không thể tham gia nhóm nữa trừ khi được bỏ chặn hoặc được quản trị viên mời lại
await group.UnblockMembersAsync([user]); // Bỏ chặn người dùng khỏi nhóm
(List<ZaloMember> BlockedMembers, bool HasMore) blockedMembers = await group.GetBlockedMembersAsync(); // Lấy danh sách thành viên bị chặn
foreach (ZaloGroupJoinRequest request in await group.GetJoinRequestsAsync())
{
Console.WriteLine($"Join request from: {request.DisplayName}");
await group.ReviewJoinRequestsAsync([request], true); // Chấp nhận yêu cầu tham gia nhóm
// await group.ReviewJoinRequestsAsync([request], false); // Từ chối yêu cầu tham gia nhóm
}
ZaloGroup groupFromInviteLink = await client.GetGroupAsync("https://zalo.me/g/XXXXXXXXX"); // Lấy nhóm từ liên kết mời
await client.JoinGroupAsync("https://zalo.me/g/XXXXXXXXX"); // Tham gia nhóm từ liên kết mời
groupFromInviteLink = await client.GetGroupAsync(groupFromInviteLink.id); // Lấy nhóm từ ID
await groupFromInviteLink.LeaveAsync(true); // Rời khỏi nhóm trong yên lặng
client.EventListeners.Disconnected += EventListeners_Disconnected;
client.EventListeners.GroupMessageReceived += EventListeners_GroupMessageReceived;
client.EventListeners.NewMemberJoined += EventListeners_NewMemberJoined;
client.EventListeners.MemberLeft += EventListeners_MemberLeft;
client.EventListeners.MemberRemoved += EventListeners_MemberRemoved;
client.EventListeners.MemberBlocked += EventListeners_MemberBlocked;
private static async Task EventListeners_MemberBlocked(ZaloClient sender, MemberBlockedEventArgs args)
{
Console.WriteLine($"Member {args.Member.DisplayName}[{args.Member.ID}] was blocked from group {args.Group.Name} by {args.Actioner?.DisplayName ?? "[null]"}");
}
private static async Task EventListeners_MemberRemoved(ZaloClient sender, MemberRemovedEventArgs args)
{
Console.WriteLine($"Member {args.Member.DisplayName}[{args.Member.ID}] was removed from group {args.Group.Name} by {args.Actioner?.DisplayName ?? "[null]"}");
}
private static async Task EventListeners_MemberLeft(ZaloClient sender, MemberLeftEventArgs args)
{
Console.WriteLine($"Member {args.Member.DisplayName}[{args.Member.ID}] left group {args.Group.Name}");
}
private static async Task EventListeners_NewMemberJoined(ZaloClient sender, MemberJoinedEventArgs args)
{
Console.WriteLine($"Member {args.Member.DisplayName}[{args.Member.ID}] joined group {args.Group.Name}");
}
private static async Task EventListeners_GroupMessageReceived(object sender, GroupMessageReceivedEventArgs args)
{
Console.WriteLine(args.Message.Content?.ToInformationalString());
}
private static async Task EventListeners_Disconnected(object sender, GatewayDisconnectedEventArgs args)
{
await Task.Delay(5000);
await client.ConnectAsync();
}
Comming soon
Dự án này được cấp phép theo giấy phép AGPL-3.0. Vui lòng xem tệp LICENSE để biết thêm chi tiết.