Guest User

Untitled

a guest
Jun 11th, 2021
29
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
F# 3.44 KB | None | 0 0
  1. open System
  2. open System.Threading
  3. open TdLib
  4.  
  5. let awaitTask task = task |> Async.AwaitTask |> Async.RunSynchronously
  6. let awaitTaskUnit task = task |> awaitTask |> ignore
  7.  
  8. type Wtf() =
  9.     static member ApiId = 0
  10.     static member ApiHash = ""
  11.     static member PhoneNumber = "" // must contain prefix
  12.     static member ResetEvent = ManualResetEventSlim()
  13.     static member val AuthNeeded = false with get, set
  14.     static member val Client = TdClient() with get, set
  15.  
  16.  
  17. TdLog.SetVerbosityLevel(0)
  18. Wtf.Client <- TdClient()
  19.            
  20. Wtf.Client.UpdateReceived.Add(
  21.     fun (update : TdApi.Update) ->
  22.         match update with
  23.         | :? TdApi.Update.UpdateOption as o ->
  24.             Wtf.Client.ExecuteAsync(TdApi.SetOption(Extra = o.Extra, Name = o.Name, Value = o.Value, DataType = o.DataType))
  25.             |> awaitTaskUnit
  26.         | :? TdApi.Update.UpdateAuthorizationState as updateAuthorizationState ->
  27.             match updateAuthorizationState.AuthorizationState with
  28.             | :? TdApi.AuthorizationState.AuthorizationStateWaitTdlibParameters ->
  29.                 Wtf.Client.ExecuteAsync(TdApi.SetTdlibParameters(
  30.                                             Parameters = TdApi.TdlibParameters(
  31.                                                 ApiId = Wtf.ApiId,
  32.                                                 ApiHash = Wtf.ApiHash,
  33.                                                 ApplicationVersion = "1.3.0",
  34.                                                 DeviceModel = "PC",
  35.                                                 SystemLanguageCode = "en",
  36.                                                 SystemVersion = "Win 10.0")))
  37.                 |> awaitTaskUnit
  38.             | :? TdApi.AuthorizationState.AuthorizationStateWaitEncryptionKey ->
  39.                 Wtf.Client.ExecuteAsync(TdApi.CheckDatabaseEncryptionKey())
  40.                 |> awaitTaskUnit
  41.             | ( :? TdApi.AuthorizationState.AuthorizationStateWaitPhoneNumber
  42.               | :? TdApi.AuthorizationState.AuthorizationStateWaitCode ) ->
  43.                 Wtf.AuthNeeded <- true
  44.                 Wtf.ResetEvent.Set()
  45.             | _ -> ()
  46.         | :? TdApi.Update.UpdateUser -> Wtf.ResetEvent.Set()
  47.         | _ -> () (* add a breakpoint here to see other events *) )
  48.  
  49. Wtf.ResetEvent.Wait()
  50. if Wtf.AuthNeeded then
  51.     Wtf.Client.ExecuteAsync(TdApi.SetAuthenticationPhoneNumber(PhoneNumber = Wtf.PhoneNumber))
  52.     |> awaitTaskUnit
  53.     Console.Write("Insert the login code: ")
  54.     let code = Console.ReadLine()
  55.     Wtf.Client.ExecuteAsync(TdApi.CheckAuthenticationCode(Code = code))
  56.     |> awaitTaskUnit
  57.  
  58. let GetChannels(offsetOrder : int64 option, offsetId : int64 option, limit : int option) =
  59.     let offsetOrder_ = defaultArg offsetOrder Int64.MaxValue
  60.     let offsetId_ = defaultArg offsetId 0L
  61.     let limit_ = defaultArg limit 1000
  62.     let chats = Wtf.Client.ExecuteAsync(TdApi.GetChats(OffsetOrder=offsetOrder_, Limit=limit_, OffsetChatId=offsetId_))
  63.                 |> awaitTask
  64.     seq {
  65.         for chatId in chats.ChatIds do
  66.             let chat = Wtf.Client.ExecuteAsync(TdApi.GetChat(ChatId = chatId)) |> awaitTask
  67.             match chat.Type with
  68.             | ( :? TdApi.ChatType.ChatTypeSupergroup
  69.               | :? TdApi.ChatType.ChatTypeBasicGroup
  70.               | :? TdApi.ChatType.ChatTypePrivate ) -> yield chat
  71.             | _ -> ()
  72.     }
  73.  
  74. for chat in GetChannels(None, None, None) do Console.WriteLine(chat.Title)
  75.  
  76. Console.ReadLine() |> ignore
  77.  
Add Comment
Please, Sign In to add comment