【问题标题】:how to get the access_hash from channel_id in telegram with Tlsharp and c#?如何使用 Tlsharp 和 c# 从电报中的 channel_id 获取 access_hash?
【发布时间】:2018-10-20 16:15:27
【问题描述】:

我有一个由 Tlsharp 开发的程序,我想加入我有它的 channel_id 的频道,但加入频道我需要 channel_idaccess_hash 用于TLRequestJoinChannel 请求。

所以我需要从 channel_id 获取 access_hash

谁能帮我解决这个问题?

【问题讨论】:

  • 你找到解决办法了吗?
  • 很遗憾没有

标签: c# api telegram


【解决方案1】:

此代码 100% 有效 :-)

var channelInfo = (await client.SendRequestAsync<TeleSharp.TL.Contacts.TLResolvedPeer>(
new TeleSharp.TL.Contacts.TLRequestResolveUsername
{
    username = "ChannelID"
}).ConfigureAwait(false)).chats.lists[0] as TeleSharp.TL.TLChannel;

var Request = new TeleSharp.TL.Channels.TLRequestJoinChannel()
{
    channel = new TLInputChannel
    {
        channel_id = channelInfo.id,
        access_hash = (long) channelInfo.access_hash
    }
};

try
{
    var Respons = await client.SendRequestAsync<Boolean>(Request);
}
catch (exception ex)
{
    // Do stuff
}

【讨论】:

  • 您的代码适用于频道的用户名,但我只有 channel_id。你知道我想加入他们的消息转发到特定频道的频道。在这种情况下,我只有一个整数变量,它是 channel_id。感谢您的回答。 :-/
【解决方案2】:
   var dialogs = (TLDialogs) await client.GetUserDialogsAsync();

        var channel = dialogs.chats.lists
            .OfType<TLChannel>()
            .FirstOrDefault(c => c.title == "channelName");

             long access_hash = (long) channel.access_hash;

【讨论】:

  • 虽然这段代码 sn-p 可以解决问题,但including an explanation 确实有助于提高帖子的质量。请记住,您正在为将来的读者回答问题,而这些人可能不知道您的代码建议的原因。也请尽量不要用解释性的 cmets 挤满你的代码,这会降低代码和解释的可读性!
  • 嗨,Amirhossein,感谢您的回答,但正如我在问题中所描述的,我只有一个 channel_id,而且我没有频道名称,顺便说一下,如果您在代码中描述什么是 chatsingle 会很有帮助???
猜你喜欢
  • 2018-03-25
  • 1970-01-01
  • 2016-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-11
  • 1970-01-01
相关资源
最近更新 更多