public void AddAndFilterMessages(TLAbsMessages msgs)
 {
     try
     {
         all_messages = (TLMessages)msgs;
         for (int i = 0; i < all_messages.Messages.Count; i++)
         {
             if (all_messages.Messages[i].ToString() == "TeleSharp.TL.TLMessage")
             {
                 var    message = (TLMessage)all_messages.Messages[i];
                 string tmp_msg = message.Message.ToString();
                 if (tmp_msg.Contains("instagram.com"))
                 {
                     filtered_messages.Add(message);
                 }
             }
             else
             {
                 //MessageBox.Show("To MessageService - pierdole to...");
             }
         }
     }
     catch (Exception ex)
     {
         System.Diagnostics.Debug.Write("sad " + ex.Message.ToString());
     }
 }
示例#2
0
 public TelegramMessages(TLMessages messages)
 {
     Messages = messages.Messages;
     Chats    = messages.Chats;
     Users    = messages.Users;
     Count    = Messages.Count;
 }
示例#3
0
        //public virtual async Task<string> GetLastMessageFromUser(string sUserName)
        //{
        //    string sResult;
        //    var client = new TLSharp.Core.TelegramClient(apiId, apiHash);
        //    await client.ConnectAsync();
        //    var normalizedUser = (sUserName.StartsWith("@") ?
        //        sUserName.Substring(1, sUserName.Length - 1) :
        //        sUserName).ToLower();
        //    var dialogs = (TLDialogs)await client.GetUserDialogsAsync();
        //    var user = dialogs.Users
        //        .Where(x => x.GetType() == typeof(TLUser))
        //        .OfType<TLUser>()
        //        .FirstOrDefault(x => x.Username != null && x.Username.ToLower() == normalizedUser);

        //    TLAbsMessages tlAbsMessages = await client.GetHistoryAsync(new TLInputPeerUser() {
        //        UserId = user.Id,
        //        AccessHash = user.AccessHash.Value
        //    }, 0, -1, 100);
        //    TLMessages tlMessages = (TLMessages)tlAbsMessages;
        //    TLMessage lastmessage = (TLMessage)tlMessages.Messages[0];
        //    sResult = lastmessage.FromId.ToString() + ":" + lastmessage.Message;
        //    return sResult;
        //}
        public virtual async Task <TLMessage> GetLastMessageFromUser(string sUserName)
        {
            TLMessage lastmessage = null;
            var       client      = new TLSharp.Core.TelegramClient(apiId, apiHash);
            await client.ConnectAsync();

            var normalizedUser = (sUserName.StartsWith("@") ?
                                  sUserName.Substring(1, sUserName.Length - 1) :
                                  sUserName).ToLower();
            var dialogs = (TLDialogs)await client.GetUserDialogsAsync();

            var user = dialogs.Users
                       .Where(x => x.GetType() == typeof(TLUser))
                       .OfType <TLUser>()
                       .FirstOrDefault(x => x.Username != null && x.Username.ToLower() == normalizedUser);

            TLAbsMessages tlAbsMessages = await client.GetHistoryAsync(new TLInputPeerUser()
            {
                UserId     = user.Id,
                AccessHash = user.AccessHash.Value
            }, 0, -1, 100);

            if (tlAbsMessages.GetType() == typeof(TLMessagesSlice))
            {
                var castMessages = (TLMessagesSlice)tlAbsMessages;
                lastmessage = (TLMessage)castMessages.Messages[0];
            }
            else if (tlAbsMessages.GetType() == typeof(TLMessages))
            {
                TLMessages tlMessages = (TLMessages)tlAbsMessages;
                lastmessage = (TLMessage)tlMessages.Messages[0];
            }
            return(lastmessage);
        }
        public async Task <MTObject> Handle_Deperacted(IMessageContext <TLGetHistory> context)
        {
            await Task.CompletedTask;
            var chats = new TLVector <TLAbsChat>();
            var chat  = new NET.Schema.Layer72.TLChat
            {
                Title = "draft12",
                Flags = 0,
                Id    = 101,
                admin = true,

                Photo = new TLChatPhotoEmpty
                {
                }
                //Photo = new TLChatPhoto {
                //	Flags = 0,
                //	HasVideo = false,
                //	PhotoBig = new TLFileLocationToBeDeprecated { },
                //	PhotoSmall = new TLFileLocationToBeDeprecated { }
                //}
            };

            chats.Add(chat);
            var message = new MTProto.NET.Schema.Layer72.TLMessage
            {
                Message = "hi therexxx",
                ToId    = new TLPeerUser
                {
                    UserId = 12,
                }
            };
            var messages = new TLVector <TLAbsMessage> {
            };

            messages.Add(message);
            var users = new TLVector <TLAbsUser>()
            {
            };

            //users.Add(new TLUserEmpty { });
            users.Add(new NET.Schema.Layer72.TLUser
            {
                Id        = 1,
                FirstName = "Ahmad"
            });
            var result = new TLMessages()
            {
                Messages = messages,                // new TLVector<TLAbsMessage> { },
                Chats    = chats,
                Users    = users
            };

            return(result);
        }
 public GroupMessages(int chatId, string chatName, Type dialogType)
 {
     all_messages      = new TLMessages();
     filtered_messages = new List <TLMessage>();
 }
        public async Task <MTObject> Handle(IMessageContext <TLGetHistory> context)
        {
            await Task.CompletedTask;
            MTObject result = null;

            try
            {
                var chats    = new TLVector <TLAbsChat>();
                var messages = new TLVector <TLAbsMessage>();
                var users    = new TLVector <TLAbsUser>();
                var session  = this.manager.GetSession(context.AuthKey());
                if (session == null)
                {
                    throw new Exception("Session not found.");
                }
                var request = context.Body;
                if (request == null)
                {
                    throw new ArgumentException(nameof(TLGetHistory));
                }
                if (request.Peer == null)
                {
                    throw new ArgumentException(nameof(TLGetHistory.Peer));
                }
                if (request.Peer is TLInputPeerUser)
                {
                    var _messages = (await session.ChatManager.GetPrivateChatMessages(session.GetUserId(), (request.Peer as TLInputPeerUser).UserId))
                                    .OrderByDescending(x => x.Data.Date);
                    _messages.Select(x => new NET.Schema.Layer72.TLMessage
                    {
                        Message = x.Data.Message,
                        FromId  = x.Data.FromId,
                        Id      = x.Data.Id,
                        Date    = x.Data.Date,
                        ToId    = new TLPeerUser
                        {
                            UserId = x.Data.ToPeerId,
                        }
                    }).ToList().ForEach(x => messages.Add(x));

                    foreach (var m in _messages)
                    {
                        if (m.Data.FromId.HasValue && m.Data.FromId != session.GetUserId() && !users.Any(x => (x as MTProto.NET.Schema.Layer72.TLUser)?.Id == m.Data.FromId))
                        {
                            using (var user_store = session.Services.Store().GetUserStore())
                            {
                                var __user = await user_store.GetUserById(m.Data.FromId.Value);

                                if (__user != null)
                                {
                                    users.Add(new MTProto.NET.Schema.Layer72.TLUser {
                                        Id        = __user.Id,
                                        FirstName = string.IsNullOrWhiteSpace(__user.FirstName)? $"{__user.Id}":__user.FirstName,
                                        Phone     = __user.Phone,
                                    });
                                }
                            }
                        }
                    }
                }
                else
                {
                    throw new NotImplementedException();
                }
                //users.Add(new NET.Schema.Layer72.TLUser
                //{
                //	Id = session.GetUserId(),
                //	FirstName = "Babak",
                //	Self = true
                //});
                result = new TLMessages()
                {
                    Messages = messages,                    // new TLVector<TLAbsMessage> { },
                    Chats    = chats,
                    Users    = users
                };
            }
            catch (Exception err)
            {
                this.logger.LogError(
                    $"An error occured while trying to handle GetHistoryRequest. Error:\r\n{err.GetBaseException().Message}");
                throw;
            }
            return(result);
        }
示例#7
0
        private async Task GetMessages()
        {
            try
            {
                TLAbsDialogs Dialogs = await Client.GetUserDialogsAsync();

                TLDialogs Dlogs = Dialogs as TLDialogs;
                int       i     = 0;
                foreach (TLUser user in Dlogs.users.lists)
                {
                    TLAbsMessages messages = null;
                    string        type     = (Dlogs.dialogs.lists[i].peer.GetType() + "").Replace("TeleSharp.TL.", "");
                    string        peerID   = "";
                    //MessageBox.Show(type);

                    switch (type)
                    {
                    case "TLPeerUser":
                        TLInputPeerUser ipeer = new TLInputPeerUser();
                        ipeer.access_hash = (long)user.access_hash;
                        ipeer.user_id     = user.id;
                        peerID            = user.id + "";
                        messages          = await Client.GetHistoryAsync(ipeer, 0, 999999, 1);

                        break;

                    case "TLPeerChannel":
                        break;

                    case "TLPeerChat":
                        break;

                    case "TLPeerNotifyEventsAll":
                        break;

                    case "TLPeerNotifyEventsEmpty":
                        break;

                    case "TLPeerNotifySettings":
                        break;

                    case "TLPeerNotifySettingsEmpty":
                        break;

                    case "TLPeerSettings":
                        break;

                    default:

                        break;
                    }



                    if (messages != null)
                    {
                        try
                        {
                            TLMessages      msgs  = messages as TLMessages;
                            TLMessagesSlice msgs2 = messages as TLMessagesSlice;
                            if (msgs != null)
                            {
                                foreach (var msg in msgs.messages.lists)
                                {
                                    string    uniq = "";
                                    TLMessage msgg = msg as TLMessage;
                                    if (msgg != null)
                                    {
                                        uniq = peerID + "_" + msgg.id + "# " + msgg.message;

                                        if (UpdatesList.Items.IndexOf(uniq) < 0)
                                        {
                                            UpdatesList.Items.Add(uniq);
                                        }
                                    }
                                }
                            }
                            else if (msgs2 != null)
                            {
                                foreach (var msg in msgs2.messages.lists)
                                {
                                    string    uniq = "";
                                    TLMessage msgg = msg as TLMessage;
                                    if (msgg != null)
                                    {
                                        uniq = peerID + "_" + msgg.id + "# " + msgg.message;

                                        if (UpdatesList.Items.IndexOf(uniq) < 0)
                                        {
                                            UpdatesList.Items.Add(uniq);
                                        }
                                    }
                                }
                            }
                        }
                        catch (Exception ex)
                        {
                            ErrorsBox.Items.Add(ex.Message);
                        }
                    }

                    i++;
                }
                //await GetUpdates();
            }
            catch (Exception ex) {
                ErrorsBox.Items.Add(ex.Message);
            }
        }
示例#8
0
        private async WTask.Task GetMessages(int uID, long uAccess, string type = "chat")
        {
            Loading(null, true);
            TLRequestMessagesGetHistory reqH = new TLRequestMessagesGetHistory();

            reqH.setAddOffset(0);
            reqH.setLimit(100);
            reqH.setOffsetId(0);
            reqH.setOffsetDate(0);
            reqH.setMinId(0);
            reqH.setMaxId(999999);

            TLInputPeerUser    upeer  = new TLInputPeerUser();
            TLInputPeerChat    cpeer  = new TLInputPeerChat();
            TLInputPeerChannel chpeer = new TLInputPeerChannel();

            switch (type.ToLower())
            {
            case "user":
                upeer = new TLInputPeerUser();
                upeer.setAccessHash(uAccess);
                upeer.setUserId(uID);
                reqH.setPeer(upeer);
                break;

            case "chat":
                cpeer = new TLInputPeerChat();
                cpeer.setChatId(uID);
                reqH.setPeer(cpeer);
                break;

            case "channel":
                chpeer = new TLInputPeerChannel();
                chpeer.setAccessHash(uAccess);
                chpeer.setChannelId(uID);
                reqH.setPeer(chpeer);
                break;

            default:
                break;
            }


            //var res = NewApi.Api().doRpcCall(reqH);
            var res = await WTask.Task.Run(() => NewApi.Api().doRpcCall(reqH));

            string notify = "";

            if (res == null)
            {
                notify = "درخواست نتیجه ای نداشت!";
                //NotifyBar.ForeColor = Color.Orange;
            }
            else
            {
                MessagesDGV.Rows.Clear();
                if (res.GetType() == typeof(TLMessages))
                {
                    try
                    {
                        TLMessages Messages = (TLMessages)res;
                        foreach (var msg in Messages.getMessages())
                        {
                            try
                            {
                                TLMessage message = (TLMessage)msg;
                                MessagesDGV.Rows.Add(message.getDate(), message.getId(), message.getMessage(), uID, uAccess);
                            }
                            catch { }
                        }
                    }
                    catch { }
                }
                else if (res.GetType() == typeof(TLMessagesSlice))
                {
                    try
                    {
                        TLMessagesSlice Messages = (TLMessagesSlice)res;
                        foreach (var msg in Messages.getMessages())
                        {
                            try
                            {
                                TLMessage message = (TLMessage)msg;
                                MessagesDGV.Rows.Add(message.getDate(), message.getId(), message.getMessage(), uID, uAccess);
                            }
                            catch { }
                        }
                    }
                    catch { }
                }
                else if (res.GetType() == typeof(TLChannelMessages))
                {
                    TLChannelMessages Messages = (TLChannelMessages)res;

                    foreach (var msg in Messages.getMessages())
                    {
                        try
                        {
                            TLMessage message = (TLMessage)msg;
                            MessagesDGV.Rows.Add(message.getDate(), message.getId(), message.getMessage(), uID, uAccess);
                        }
                        catch { }
                    }
                }
            }

            Loading(null, false, notify);
        }