diff --git a/TLSharp.Core/TelegramClient.cs b/TLSharp.Core/TelegramClient.cs
index 7cf7e5d..732adad 100644
--- a/TLSharp.Core/TelegramClient.cs
+++ b/TLSharp.Core/TelegramClient.cs
@@ -337,6 +337,23 @@ namespace TLSharp.Core
await _sender.SendPingAsync();
}
+ ///
+ /// Serch user or chat. API: contacts.search#11f812d8 q:string limit:int = contacts.Found;
+ ///
+ /// User or chat name
+ /// Max result count
+ ///
+ public async Task SearchUserAsync(string q, int limit = 10)
+ {
+ var r = new TeleSharp.TL.Contacts.TLRequestSearch
+ {
+ q = q,
+ limit = limit
+ };
+
+ return await SendRequestAsync(r);
+ }
+
private void OnUserAuthenticated(TLUser TLUser)
{
_session.TLUser = TLUser;
diff --git a/TLSharp.Tests.NUnit/Test.cs b/TLSharp.Tests.NUnit/Test.cs
index 7c390db..40e54ac 100644
--- a/TLSharp.Tests.NUnit/Test.cs
+++ b/TLSharp.Tests.NUnit/Test.cs
@@ -75,5 +75,11 @@ namespace TLSharp.Tests
{
await base.FloodExceptionShouldNotCauseCannotReadPackageLengthError();
}
+
+ [Test]
+ public override async Task SendMessageByUserNameTest()
+ {
+ await base.SendMessageByUserNameTest();
+ }
}
}
diff --git a/TLSharp.Tests.VS/TLSharpTestsVs.cs b/TLSharp.Tests.VS/TLSharpTestsVs.cs
index fff25b6..8f6c58d 100644
--- a/TLSharp.Tests.VS/TLSharpTestsVs.cs
+++ b/TLSharp.Tests.VS/TLSharpTestsVs.cs
@@ -73,5 +73,11 @@ namespace TLSharp.Tests
{
await base.FloodExceptionShouldNotCauseCannotReadPackageLengthError();
}
+
+ [TestMethod]
+ public override async Task SendMessageByUserNameTest()
+ {
+ await base.SendMessageByUserNameTest();
+ }
}
}
diff --git a/TLSharp.Tests/TLSharpTests.cs b/TLSharp.Tests/TLSharpTests.cs
index 6166067..487b535 100644
--- a/TLSharp.Tests/TLSharpTests.cs
+++ b/TLSharp.Tests/TLSharpTests.cs
@@ -323,6 +323,7 @@ namespace TLSharp.Tests
var result = await client.IsPhoneRegisteredAsync(NumberToAuthenticate);
Assert.IsTrue(result);
}
+
public virtual async Task FloodExceptionShouldNotCauseCannotReadPackageLengthError()
{
for (int i = 0; i < 50; i++)
@@ -338,5 +339,42 @@ namespace TLSharp.Tests
}
}
}
+
+ public virtual async Task SendMessageByUserNameTest()
+ {
+ UserNameToSendMessage = ConfigurationManager.AppSettings[nameof(UserNameToSendMessage)];
+ if (string.IsNullOrWhiteSpace(UserNameToSendMessage))
+ throw new Exception($"Please fill the '{nameof(UserNameToSendMessage)}' setting in app.config file first");
+
+ var client = NewClient();
+
+ await client.ConnectAsync();
+
+ var result = await client.SearchUserAsync(UserNameToSendMessage);
+
+ var user = result.users.lists
+ .Where(x => x.GetType() == typeof(TLUser))
+ .OfType()
+ .FirstOrDefault(x => x.username == UserNameToSendMessage.TrimStart('@'));
+
+ if (user == null)
+ {
+ var contacts = await client.GetContactsAsync();
+
+ user = contacts.users.lists
+ .Where(x => x.GetType() == typeof(TLUser))
+ .OfType()
+ .FirstOrDefault(x => x.username == UserNameToSendMessage.TrimStart('@'));
+ }
+
+ if (user == null)
+ {
+ throw new System.Exception("Username was not found: " + UserNameToSendMessage);
+ }
+
+ await client.SendTypingAsync(new TLInputPeerUser() { user_id = user.id });
+ Thread.Sleep(3000);
+ await client.SendMessageAsync(new TLInputPeerUser() { user_id = user.id }, "TEST");
+ }
}
}