mirror of
https://github.com/sochix/TLSharp.git
synced 2025-12-06 08:02:00 +01:00
Added implementation of AddChatUser/DeleteChatUser/LeaveChat
This commit is contained in:
parent
98f014a49d
commit
ccf2008404
64
README.md
64
README.md
|
|
@ -77,7 +77,12 @@ Currently supported methods:
|
|||
- [Get Contact by Username](#get-contact-by-username)
|
||||
- [Send Message to Contact](#send-message-to-contact)
|
||||
- [Send Media to Contact](#send-media-to-contact)
|
||||
- [Get Messages History for a Contact](#get-messages-history)
|
||||
- [Get Messages History](#get-messages-history)
|
||||
- [Get UserFull](#get-userfull)
|
||||
- [Create Chat](#create-chat)
|
||||
- [Add Chat user](#add-chat-user)
|
||||
- [Delete Chat user](#delete-chat-user)
|
||||
- [Leave Chat](#leave-chat)
|
||||
|
||||
####IsPhoneRegistered
|
||||
Check if phone number registered to Telegram.
|
||||
|
|
@ -179,7 +184,7 @@ var hist = await client.GetMessagesHistoryForContact(userId, offset, limit);
|
|||
|
||||
**Returns**: **List\<Message\>**, message history
|
||||
|
||||
####Get UserFull Request
|
||||
####Get UserFull
|
||||
Returns user's full information for specified userId.
|
||||
|
||||
_Example_:
|
||||
|
|
@ -192,6 +197,61 @@ var userFull = await client.GetUserFull(userId);
|
|||
|
||||
**Returns**: **UserFull**, User's information
|
||||
|
||||
####Create Chat
|
||||
Creates a new chat.
|
||||
|
||||
_Example_:
|
||||
|
||||
```
|
||||
var statedMessage = await client.CreateChat(title, new List<string> { userId1, userId2 });
|
||||
```
|
||||
|
||||
* title - **string**, chat name
|
||||
* userIdsToInvite - **List<int>**, list of userIds to invite to chat. Current user will be automatically added to this chat.
|
||||
|
||||
**Returns**: **Messages_statedMessageConstructor**, Message that contains information about created chat.
|
||||
|
||||
####Add Chat user
|
||||
Adds a user to a chat and sends a service message on it.
|
||||
|
||||
_Example_:
|
||||
|
||||
```
|
||||
var statedMessage = await client.AddChatUser(chatId, userId);
|
||||
```
|
||||
|
||||
* chatId - **int**, Chat ID
|
||||
* userId - **int**, User ID to be added
|
||||
|
||||
**Returns**: **Messages_statedMessageConstructor**, Message that contains information about modified chat.
|
||||
|
||||
####Delete Chat user
|
||||
Deletes a user from a chat and sends a service message on it.
|
||||
|
||||
_Example_:
|
||||
|
||||
```
|
||||
var statedMessage = await client.DeleteChatUser(chatId, userId);
|
||||
```
|
||||
|
||||
* chatId - **int**, Chat ID
|
||||
* userId - **int**, User ID to be deleted
|
||||
|
||||
**Returns**: **Messages_statedMessageConstructor**, Message that contains information about modified chat.
|
||||
|
||||
####Leave Chat
|
||||
Leaves the chat by deleting currently authenticated user from it.
|
||||
|
||||
_Example_:
|
||||
|
||||
```
|
||||
var statedMessage = await client.LeaveChat(chatId);
|
||||
```
|
||||
|
||||
* chatId - **int**, Chat ID
|
||||
|
||||
**Returns**: **Messages_statedMessageConstructor**, Message that contains information about modified chat.
|
||||
|
||||
## Contributing
|
||||
|
||||
Contributing is highly appreciated!
|
||||
|
|
|
|||
|
|
@ -90,8 +90,8 @@
|
|||
<ItemGroup>
|
||||
<None Include="packages.config" />
|
||||
<Compile Include="Requests\CreateChatRequest.cs" />
|
||||
<None Include="Requests\AddChatUserRequest.cs" />
|
||||
<None Include="Requests\DeleteChatUserRequest.cs" />
|
||||
<Compile Include="Requests\AddChatUserRequest.cs" />
|
||||
<Compile Include="Requests\DeleteChatUserRequest.cs" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
|
|
|
|||
|
|
@ -294,7 +294,7 @@ namespace TLSharp.Core
|
|||
};
|
||||
}
|
||||
|
||||
public async Task<ChatConstructor> CreateChat(string title, List<string> userPhonesToInvite)
|
||||
public async Task<Messages_statedMessageConstructor> CreateChat(string title, List<string> userPhonesToInvite)
|
||||
{
|
||||
var userIdsToInvite = new List<int>();
|
||||
foreach (var userPhone in userPhonesToInvite)
|
||||
|
|
@ -309,18 +309,39 @@ namespace TLSharp.Core
|
|||
return await CreateChat(title, userIdsToInvite);
|
||||
}
|
||||
|
||||
public async Task<ChatConstructor> CreateChat(string title, List<int> userIdsToInvite)
|
||||
public async Task<Messages_statedMessageConstructor> CreateChat(string title, List<int> userIdsToInvite)
|
||||
{
|
||||
var request = new CreateChatRequest(userIdsToInvite.Select(uid => new InputUserContactConstructor(uid)).ToList(), title);
|
||||
|
||||
await _sender.Send(request);
|
||||
await _sender.Receive(request);
|
||||
|
||||
var serviceMessage = request.message.message as MessageServiceConstructor;
|
||||
var peerChat = serviceMessage.to_id as PeerChatConstructor;
|
||||
return request.message;
|
||||
}
|
||||
|
||||
var createdChatId = peerChat.chat_id;
|
||||
return request.message.chats.OfType<ChatConstructor>().Single(c => c.id == createdChatId);
|
||||
public async Task<Messages_statedMessageConstructor> AddChatUser(int chatId, int userId)
|
||||
{
|
||||
var request = new AddChatUserRequest(chatId, new InputUserContactConstructor(userId));
|
||||
|
||||
await _sender.Send(request);
|
||||
await _sender.Receive(request);
|
||||
|
||||
return request.message;
|
||||
}
|
||||
|
||||
public async Task<Messages_statedMessageConstructor> DeleteChatUser(int chatId, int userId)
|
||||
{
|
||||
var request = new DeleteChatUserRequest(chatId, new InputUserContactConstructor(userId));
|
||||
|
||||
await _sender.Send(request);
|
||||
await _sender.Receive(request);
|
||||
|
||||
return request.message;
|
||||
}
|
||||
|
||||
public async Task<Messages_statedMessageConstructor> LeaveChat(int chatId)
|
||||
{
|
||||
return await DeleteChatUser(chatId, ((UserSelfConstructor) _session.User).id);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ using System.Collections.Generic;
|
|||
using System.Configuration;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||
using TLSharp.Core;
|
||||
|
|
@ -274,6 +275,64 @@ namespace TLSharp.Tests
|
|||
|
||||
[TestMethod]
|
||||
public async Task CreateChatRequest()
|
||||
{
|
||||
var client = await InitializeClient();
|
||||
|
||||
var chatName = Guid.NewGuid().ToString();
|
||||
var statedMessage = await client.CreateChat(chatName, new List<string> {NumberToSendMessage});
|
||||
|
||||
var createdChat = GetChatFromStatedMessage(statedMessage);
|
||||
|
||||
Assert.AreEqual(chatName, createdChat.title);
|
||||
Assert.AreEqual(2, createdChat.participants_count);
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public async Task AddChatUserRequest()
|
||||
{
|
||||
var client = await InitializeClient();
|
||||
|
||||
var chatName = Guid.NewGuid().ToString();
|
||||
var statedMessageAfterCreation = await client.CreateChat(chatName, new List<string> { NumberToSendMessage });
|
||||
|
||||
var createdChat = GetChatFromStatedMessage(statedMessageAfterCreation);
|
||||
|
||||
var addUserId = await client.ImportContactByPhoneNumber("380685004559");
|
||||
|
||||
var statedMessageAfterAddUser = await client.AddChatUser(createdChat.id, addUserId.Value);
|
||||
var modifiedChat = GetChatFromStatedMessage(statedMessageAfterAddUser);
|
||||
|
||||
Assert.AreEqual(createdChat.id, modifiedChat.id);
|
||||
Assert.AreEqual(3, modifiedChat.participants_count);
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public async Task LeaveChatRequest()
|
||||
{
|
||||
var client = await InitializeClient();
|
||||
|
||||
var chatName = Guid.NewGuid().ToString();
|
||||
var statedMessageAfterCreation = await client.CreateChat(chatName, new List<string> { NumberToSendMessage });
|
||||
|
||||
var createdChat = GetChatFromStatedMessage(statedMessageAfterCreation);
|
||||
|
||||
var statedMessageAfterLeave = await client.LeaveChat(createdChat.id);
|
||||
var modifiedChat = GetChatFromStatedMessage(statedMessageAfterLeave);
|
||||
|
||||
Assert.AreEqual(createdChat.id, modifiedChat.id);
|
||||
Assert.AreEqual(1, modifiedChat.participants_count);
|
||||
}
|
||||
|
||||
private ChatConstructor GetChatFromStatedMessage(Messages_statedMessageConstructor message)
|
||||
{
|
||||
var serviceMessage = message.message as MessageServiceConstructor;
|
||||
var peerChat = serviceMessage.to_id as PeerChatConstructor;
|
||||
|
||||
var createdChatId = peerChat.chat_id;
|
||||
return message.chats.OfType<ChatConstructor>().Single(c => c.id == createdChatId);
|
||||
}
|
||||
|
||||
private async Task<TelegramClient> InitializeClient()
|
||||
{
|
||||
var store = new FileSessionStore();
|
||||
var client = new TelegramClient(store, "session", apiId, apiHash);
|
||||
|
|
@ -291,11 +350,7 @@ namespace TLSharp.Tests
|
|||
|
||||
Assert.IsTrue(client.IsUserAuthorized());
|
||||
|
||||
var chatName = Guid.NewGuid().ToString();
|
||||
var chat = await client.CreateChat(chatName, new List<string> {NumberToSendMessage});
|
||||
|
||||
Assert.AreEqual(chatName, chat.title);
|
||||
Assert.AreEqual(2, chat.participants_count);
|
||||
return client;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue