public async Task <TLUser> GetByUserName(string userName, int numberOfTry = 0) { try { TLFound found = await this.telegramClient.SearchUserAsync(userName); var users = found.Users.OfType <TLUser>(); if (!users.Any()) { return(null); } return(users.First()); } catch (Exception ex) { ApplicationHelpers.LogException(ex); if (numberOfTry > 2) { throw; } await Task.Delay(telegramSetting.DelayPerMessage); return(await GetByUserName(userName, ++numberOfTry)); } //long hash = ((TLUser)found.Users.ToList()[0]).access_hash.Value; //int id = ((TeleSharp.TL.TLUser)found.users.lists[0]).id; //TeleSharp.TL.TLInputPeerUser peer = new TeleSharp.TL.TLInputPeerUser() { user_id = id, access_hash = hash }; //TeleSharp.TL.TLAbsUpdates up = await this.client.SendMessageAsync(peer, "/start"); }
public async Task BotClientHandshakeAsync() { var dialogsResult = (TLDialogs)await TelClient.GetUserDialogsAsync(); var users = dialogsResult.Users.OfType <TLUser>(); var bot = users.FirstOrDefault(x => x.Id == TelBotClient.BotId); //написал боту TLFound found = await TelClient.SearchUserAsync("yasma_test_bot"); long hashs = ((TLUser)found.Users[0]).AccessHash.Value; int id = ((TLUser)found.Users[0]).Id; TLInputPeerUser peer = new TeleSharp.TL.TLInputPeerUser() { UserId = id, AccessHash = hashs }; try { if (bot == null) { await TelClient.SendMessageAsync(peer, "/start"); } else { await TelClient.SendMessageAsync(peer, "/hi_again"); } var w = await TelBotClient.GetUpdatesAsync(); var userdialog = w.Where(x => x.Message.From.Id == (int)CurrUser.Id).ToList().FirstOrDefault(); DialogBotUserID = (int)userdialog.Message.Chat.Id; if (userdialog.Message.Text == "/hi_again") { await BotSendMess("И снова здаравствуй!"); } else if (userdialog.Message.Text == "/start") { await BotSendMess("Привет, я твой оповещатор!\nМои команды:\n" + "/i_got_it - Вы говорите мне что приняли мое оповещение. Я буду искать другие варианты. И оповещать вас о них!\n" + "/stop_watch - Остановлю работу программы парсер\n" + "/go_watch - Запущу программу парсер дальше\n" + "/get_settings - Отправлю текущие настройки парсера"); } TelBotClient.StartReceiving(); StartTelegrammEvent?.Invoke(LoginState.success); } catch (Exception) { StartTelegrammEvent?.Invoke(LoginState.denied); return; } }
public async Task <List <TLChannel> > GetChats(TelegramClient client, List <string> names) { List <TLChannel> channels = new List <TLChannel>(); try { foreach (string name in names) { TLFound dialogs = await client.SearchUserAsync(name); //try get by chat name TLChannel channel = dialogs.Chats.Where(c => c.GetType() == typeof(TLChannel)) .Cast <TLChannel>() .FirstOrDefault(c => c.Title == name); if (channel != null) { channels.Add(channel); } else { //try get by @chatname channel = dialogs.Chats.Where(c => c.GetType() == typeof(TLChannel)) .Cast <TLChannel>() .FirstOrDefault(c => c.Username == name); if (channel != null) { channels.Add(channel); } } } if (channels.Count > 0) { channels = channels.GroupBy(x => x.Id).Select(y => y.First()).ToList(); } } catch (Exception ex) { Logger.Error(ex); } return(channels); }