ログイン前に WTelegram の SOCKS TcpHandler を設定する
選んだプロキシライブラリからネゴシエーション済みの TcpClient を返します。Task.FromResult で包んでも接続呼び出しは同期のままです。
client.TcpHandler = (address, port) =>
{
var proxy = new Socks5ProxyClient(
proxyHost, proxyPort, proxyUsername, proxyPassword);
return System.Threading.Tasks.Task.FromResult(
proxy.CreateConnection(address, port));
};
await client.LoginUserIfNeeded();既存の WTelegram.Client を使い、選んだ互換 SOCKS ライブラリをインポートします。proxyHost、ポート、アカウントは中継側の情報です。lambda の address/port は WTelegram が要求する接続先を表します。
CreateConnection は、プロキシとのネゴシエーション後に接続済みの TcpClient を返す必要があります。プロキシのポートに到達しただけでは、この引き渡しはできません。
例ではライブラリの同期メソッドを使っています。結果を Task.FromResult で包んでも接続処理はノンブロッキングにはなりません。必要なら、対応する非同期メソッドを使ってください。
ログイン時だけでなく、後続の接続にも handler を残しておきます。Telegram アカウントの認証は SOCKS アカウントとは別です。