private async Task <bool> SendMessage(int Id, string Message, ePeerType PeerType = ePeerType.User) { var peer = this.GetPeer(Id, PeerType); await this.Client.SendMessageAsync(peer, Message); return(true); }
// TODO ->> Cast private async Task <bool> SendMedia(int Id, IMediaItem MediaItem, ePeerType PeerType = ePeerType.User) { TLAbsInputMedia media = new TLInputMediaEmpty(); /// TODO ->> ?? /// this.Client.SendUploadedDocument(<inputPeer>, <inputFile>, <title>, <mimeType>, <attributes>) /// this.Client.SendUploadedPhoto(<inputPeer>, <inputFile>, <title>) if (MediaItem is PhotoURL) { media = (TLInputMediaPhotoExternal)MediaItem; } await this.Client.SendRequestAsync <TLUpdates>(new TLRequestSendMedia { Peer = this.GetPeer(Id, PeerType), Media = media }); return(true); }
private TLAbsInputPeer GetPeer(int Id, ePeerType PeerType) { switch (PeerType) { case ePeerType.Self: return(new TLInputPeerSelf { }); case ePeerType.User: return(new TLInputPeerUser { UserId = Id }); case ePeerType.Group: return(new TLInputPeerChat { ChatId = Id }); case ePeerType.Channel: return(new TLInputPeerChannel { ChannelId = Id }); default: case ePeerType.NULL: return(new TLInputPeerEmpty()); } }
private async Task <bool> UpdateMessagePinState(int MessageId, bool PinState, int PeerId, ePeerType PeerType = ePeerType.User) { await this.Client.SendRequestAsync <TLUpdates>(new TLRequestToggleDialogPin { MessageId = MessageId, Peer = this.GetPeer(PeerId, PeerType), Pinned = PinState }); return(true); }
private async Task <IEnumerable <Message> > GetHistory(int Id, int Limit = 100, ePeerType PeerType = ePeerType.User) { var historyAbs = await this.Client.SendRequestAsync <TLAbsMessages>(new TLRequestGetHistory { Peer = this.GetPeer(Id, PeerType), Limit = Limit, }); var historyMessagesAbs = (historyAbs is TLMessages) ? (historyAbs as TLMessages).Messages : (historyAbs as TLMessagesSlice).Messages; var historyMessages = historyMessagesAbs.Where(x => x is TLMessage).Select(x => (Message)x) ?? new List <Message>(); return(historyMessages); }