我怎么知道电报用户是否使用电报机器人API加入了我的频道



请查看此链接&这个。
基于第二个链接,我做到了:

public static class Program {
    private static readonly TelegramBotClient Bot = new TelegramBotClient("My Token");
    public static void Main(string[] args) {
        var me = Bot.GetMeAsync().Result;
        Console.Title = me.Username;
        Bot.OnMessage += BotOnMessageReceived;
        Bot.OnMessageEdited += BotOnMessageReceived;
        Bot.OnCallbackQuery += BotOnCallbackQueryReceived;
        Bot.OnInlineQuery += BotOnInlineQueryReceived;
        Bot.OnInlineResultChosen += BotOnChosenInlineResultReceived;
        Bot.OnReceiveError += BotOnReceiveError;
        Bot.StartReceiving(Array.Empty < UpdateType > ());
        Console.WriteLine($ "Start listening for @{me.Username}");
        Console.ReadLine();
        Bot.StopReceiving();
    }
    private static async void BotOnMessageReceived(object sender, MessageEventArgs messageEventArgs) {
        var message = messageEventArgs.Message;
        if (message == null || message.Type != MessageType.Text) return;
        bool is_member_of_channel = Is_Member_Of_Channel("@Channel_Name", message.From.Id);
    }
    private static bool Is_Member_Of_Channel(string channel_name, int user_id) {
        var t = Bot.GetChatMemberAsync(channel_name, user_id);
        if (t.Result.Status.ToString().Length > 25) return false;
        return true;
    }
}

但是我有一个错误:

类型的例外 Mscorlib.dll中发生了" System.AggregateException",但不是 在用户代码

中处理

其他信息:发生一个或多个错误。

问题是什么&amp;我该如何修复?

什么是频道名称?

我对频道名称做正确的事?

GetChatMemberAsync()告诉频道名称是ChatId,我如何获得我的频道的ChatId

问题是什么&amp;我该如何修复?

您的机器人应在目标频道中添加为administrator
目标 频道应为public

什么是频道名称?

正确的是: @Channel_Name

我对频道名称做正确的事?

是,

这是正确的方法:

private static bool Is_Member_Of_Channel(string channel_name, int user_id)
{
    //Status Values
    //Creator
    //Member
    //Left
    var t = Bot.GetChatMemberAsync(channel_name, user_id);
    if (t.Result.Status.ToString() == "Left")
        return false;
    return true;
}

相关内容

最新更新