Esempio n. 1
0
        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");
        }
Esempio n. 2
0
        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;
            }
        }
Esempio n. 3
0
        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);
        }