【问题标题】:How do I know if a telegram user joined my channel using telegram bot api?我如何知道电报用户是否使用电报机器人 API 加入了我的频道?
【发布时间】:2019-03-16 22:17:50
【问题描述】:

请看this link & this
基于第二个链接,我这样做了:

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;
    }
}

但我有这个错误:

类型异常 'System.AggregateException' 发生在 mscorlib.dll 中,但不是 在用户代码中处理

附加信息:出现一个或多个错误。

问题是什么?我该如何解决?

什么是频道名称?

频道名称我做对了吗?

GetChatMemberAsync() 告诉频道名称是ChatId,我怎样才能获得我频道的ChatId

【问题讨论】:

    标签: c# telegram-bot


    【解决方案1】:

    问题是什么?我该如何解决?

    您的机器人应在目标频道中添加为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;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-16
      • 2021-04-08
      • 1970-01-01
      • 2016-07-18
      • 2021-10-12
      • 2016-07-22
      • 2022-06-17
      • 1970-01-01
      相关资源
      最近更新 更多