[英]How do I know if a telegram user joined my channel using telegram bot 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”類型的異常,但未在用戶代碼中處理
附加信息:發生一個或多個錯誤。
有什么問題,我該如何解決?
什么是頻道名稱?
我對頻道名稱做得對嗎?
GetChatMemberAsync()
告訴頻道名稱是ChatId
,我怎樣才能獲得我頻道的ChatId
?
有什么問題,我該如何解決?
您的機器人應該在目標渠道中以
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;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.