我怎么知道电报用户是否加入了我的频道?

时间:2017-10-03 10:28:06

标签: c# telegram telegram-bot

我正在编写一个C#桌面应用程序。在这个应用程序中我写了一个用户的电报ID,它说该用户是否是该频道的成员。我的机器人是渠道的管理员。

我使用telegram.bot v9 nugget并整天搜索这个问题。

我尝试在v13中使用GetChatMembersCountAsync()以及许多其他方法但是没有用。

    static private Api bot = new Api("Token");
    long id;
    string channel="@ChannelName";

    public Main()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        id = long.Parse(textBox7.Text);
        if (IsMember(id,channel))
            MessageBox.Show("This user is member of channel");
        else
            MessageBox.Show("This user is not a member of channel");

    }

    private bool IsMember(long id,string channelName)
    {
        //??????????????
    }

是否有一种方法可以让电报机器人访问频道成员列表?我应该在IsMember()方法中写什么?

非常感谢

通过将telegram.bot nugget更新为v10并使用GetChatMemberAsync方法解决了此问题。

    private bool IsMember(long id,string channelName)  
    {  
        var t = bot.GetChatMemberAsync(channelName, id);
            if (t.Result.Status.ToString().Length > 25)
                return false;
            return true;
    }

谢谢

2 个答案:

答案 0 :(得分:3)

您可以使用getChatMember方法执行此操作,请参阅以下示例。

Awesome Telegram Bot

答案 1 :(得分:2)

关于Telegram Bot API documentation目前,没有方法可供机器人获取聊天成员列表(频道或群组)。 这是一个小技巧: 您可以查看来自Telegram的更新(消息)到您的webhook,如果new_chat_members字段有值并且chat_id字段表明它来自您的频道,那么您可以保存有关最近用户的信息谁加入了您的频道。