我正在编写一个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;
}
谢谢
答案 0 :(得分:3)
您可以使用getChatMember方法执行此操作,请参阅以下示例。
答案 1 :(得分:2)
关于Telegram Bot API documentation目前,没有方法可供机器人获取聊天成员列表(频道或群组)。
这是一个小技巧:
您可以查看来自Telegram的更新(消息)到您的webhook,如果new_chat_members
字段有值并且chat_id
字段表明它来自您的频道,那么您可以保存有关最近用户的信息谁加入了您的频道。