From 1ffbca1b515b54520b9a1cb41cd62fad257e9144 Mon Sep 17 00:00:00 2001 From: Wizou <11647984+wiz0u@users.noreply.github.com> Date: Sat, 25 Jun 2022 17:05:27 +0200 Subject: [PATCH] coherent null behaviour for UserOrChat helpers --- Examples/WinForms_app.zip | Bin 10756 -> 10757 bytes FAQ.md | 1 + src/TL.Helpers.cs | 6 +++--- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/Examples/WinForms_app.zip b/Examples/WinForms_app.zip index e7cbfb3767c6a65eadc0a81b41a2ca9494fbf31a..35c9bc3b686c1063f9263f638706cb9553148eda 100644 GIT binary patch delta 902 zcmZn(X$|2G@MdNaVE_Tyj++yC4F!Qz2tV76##u}Z41Vkk3<{GOg(N3t@Yd(wG7zbo zzvX|z&(aA38jIIDX$UaN&*03C&%OH^0yOS2t@YZr zO4oknTJ8D0dfZDoSol*8-f1e9yPEVwtiE;qUA;BTl5j^EVQ8Y)jqLZ{LXSN zb6?$dN?%&Av~gk6B}t{I7rV}|EWe*%cr7^KaE^gO?XCYaWWMq(D6VKZ+%Y@3jZ^-Z z!h@3nm1-6m=4`L!^cH6?<~HbS?k$trUsrKeYROG?R+p9wpS#m7+UID$o3<`i(CQ)A zv0uCEm$`%pC8az_Kgk=@Jn_!8XU|+B4t%_|V#mvnx0!p6UNH%%ebDuCXRqGYiDpuw zt@BGftDT!aWJIW{_AJ!YY5TF~!D36p1qZ5l(_N;-x!B*E`psm^&i6?o?UMg0_g=9| zn)AHrTB1(3lQjFAWg&gu5$UyM0j+oaPAm4+#q{X!{a$ZyJ?&Q1&L`4rf#U0zaozYj zb>+plh$wC&;coxBl=n8DW_v}-S1<0PS57;AEg9pqxPnHzf|z9s`QJTZg|cA+wpC?dvnXxw`Km(GEz)A8?*FmaPikW=bnc=wppj` zXb|+l{hYz48*@1Ral2hx{i5gn0bj{!)*_}mS?1U?`ghFz!~P;^k*Lio$)L1^vKITF z6ONs>j}BkC{=eU8le(wwz*yVN!MsnA8JKP-pHy+=JE0O8zog>^BZQuupee=)Ptudk zRbBavriFtQh{w+X(jWzs7pTfH@i0$Ll#!Th&&)mfv8o@FDhHIyIXOfvlIgi1oO?kn zi0Pd;kSjgeUOkk_Ruafmp1f1tkEsU2)X|7#a+3jyngdM|ne4BjF!`H?6eG)ILCt2S UGKI+#6-*|d(llY)tpdt+0OA^!SpWb4 delta 913 zcmZn-X$j#C@MdNaVE}=ZiKiy=8Vcqmo(f@{8rw@ zk0-5M+IeoOo{x#9_rc7$rI++}vi%Bqnax?BoWZwRWd5|8O)63<63rKzIM_A!vD7Y9 z+3t0p&!B5|;Ya)P+^5?otW5qYwyd+}+Nr4?lMeNlv3)U(c>VEr?VD9!HX2l{t}nUl zwMM!mVDfdx?TzR5t_ZKSdU1sFwaF5pIagguE-XF$=i2=Q)6n7xnPzg61!ZgB$n$(( zu)V(Fa9929>^9!_%M>0sPJZN4Frkd=*uA;#)1#&?&}A2XyQMC8k00-qJ*q4&Edi%D zyIZu*sn*S|j}@?bEVS&^?nN#kB1uagE`Kbw=NYScFK@9D&w~o(kUL>oHy*aG5DlJ| z@!I%;TT=Kmujqtuzo@ta$6j~uJ@qE-U69OQi`nzC&%Xys_|1ucj@Cb_GgMuvGr^W{Qvd>U!1e`4bEI4`^`QEk+;J=f9pkEe_Qh_dV7p8 zXUoJ%_lw&mzCYXfV1GiAO?TLDo;%AH?&}Ja_I~ks`7z_9wEqiBErW&LE!CDVx?sJ{ z{?~*fU;D$Co1Cvdo+@O2S-Erm|IM7t`xKdhsdw@z6-VCn8|1fas=2`krY9$8igUsf z^kfTFS8j<9j71>%8wWxr$7xDVo}k7uS&EsDR|T90fXN+5b5A~?TEwKnG1-wrXL5p? zAJa2IAX9PjMYSNNx8gvi#AI9b2qqgzFmr<>_vBsbeoWOcuGC~34L>GV8My3vjU*;! Yc_c39WP8mprcwp4(0a`Pwq0QB0c>lT!Tℹ️ For FLOOD_WAIT_X with X < 60 seconds (see `client.FloodRetryThreshold`), WTelegramClient will automatically wait the specified delay and retry the request for you. +For longer delays, you can catch the thrown `RpcException` and check the value of property X. An account that was restricted due to reported spam might receive PEER_FLOOD errors. Read [Telegram Spam FAQ](https://telegram.org/faq_spam) to learn more. diff --git a/src/TL.Helpers.cs b/src/TL.Helpers.cs index 62b2c53..e8ad355 100644 --- a/src/TL.Helpers.cs +++ b/src/TL.Helpers.cs @@ -298,7 +298,7 @@ namespace TL } } - partial class Contacts_Blocked { public IPeerInfo UserOrChat(PeerBlocked peer) => peer.peer_id.UserOrChat(users, chats); } + partial class Contacts_Blocked { public IPeerInfo UserOrChat(PeerBlocked peer) => peer.peer_id?.UserOrChat(users, chats); } partial class Messages_DialogsBase { public IPeerInfo UserOrChat(DialogBase dialog) => UserOrChat(dialog.Peer); public abstract int TotalCount { get; } } partial class Messages_Dialogs { public override int TotalCount => dialogs.Length; } @@ -437,7 +437,7 @@ namespace TL partial class Contacts_ResolvedPeer { - public static implicit operator InputPeer(Contacts_ResolvedPeer resolved) => resolved.UserOrChat.ToInputPeer(); + public static implicit operator InputPeer(Contacts_ResolvedPeer resolved) => resolved?.UserOrChat.ToInputPeer(); /// A , or if the username was for a channel public User User => peer is PeerUser pu ? users[pu.user_id] : null; /// A or , or if the username was for a user @@ -493,7 +493,7 @@ namespace TL partial class ChannelParticipantBanned { public override long UserID => peer is PeerUser pu ? pu.user_id : 0; } partial class ChannelParticipantLeft { public override long UserID => peer is PeerUser pu ? pu.user_id : 0; } - partial class Messages_PeerDialogs { public IPeerInfo UserOrChat(DialogBase dialog) => dialog.Peer.UserOrChat(users, chats); } + partial class Messages_PeerDialogs { public IPeerInfo UserOrChat(DialogBase dialog) => dialog.Peer?.UserOrChat(users, chats); } partial class WebDocument { public static implicit operator InputWebFileLocation(WebDocument doc) => new() { url = doc.url, access_hash = doc.access_hash }; }